GNU General Public License v2.0

技术解读

以下内容由 GitRead 中文社区 编辑团队基于项目 README 与官方资料整理, 结合中文开发者的常见使用场景补充技术选型建议。具体以项目官方文档为准。

深度技术分析:extremscorner/not64 项目探究

项目背景与痛点

not64 是一个基于 Mupen64GC 改进的实验性项目,使用 devkitRice 进行开发。该项目针对怀旧游戏爱好者提供了更加灵活的游戏体验,特别在多平台适配上做出了积极探索。对于喜欢经典游戏的用户而言,它提供了一个独特的运行环境,尤其解决了在现代硬件平台上运行这些游戏时所遇到的兼容性问题。

核心技术揭秘

技术架构与实现

not64 项目通过重新编写部分 Mupen64GC 核心,实现了对多种平台的支持。其关键技术栈包括 C++ 与 devkitRice 工具集,确保了编译效率和可移植性。

下面通过 Mermaid 构建项目的数据流图:

graph TD A[用户交互] --> B[输入处理] B --> C{"解析指令"} C -->|"游戏控制"| D[更新游戏状态] C -->|"设置调整"| E[更新设置] D --> F[渲染帧] E --> F F --> G[输出显示] G --> A
实现原理与关键技术

项目的数据流从用户接口开始,接收不同的指令,如游戏控制与系统设置调整。处理器对命令进行解析,随后更新游戏状态或再配置系统参数。最后,通过渲染引擎生成帧,并输出到显示设备,完成了一个完整的数据处理流程。

功能亮点与差异

相比 Mupen64GC 原版,not64 项目做了许多细节上的改进,如更精细的图形处理、更多的存档与备份功能,以及对现代硬件的优化。此外,它支持跨平台运行,使得用户能够在不同设备上畅玩经典游戏。

应用场景与落地建议

在生产环境中使用 not64,需要注意内存管理与资源分配。项目需要较高的 CPU 和 GPU 资源来渲染高清图形,因此建议在配置足够的机器上运行。

适配场景包括:

  • 休闲玩家:无需高昂的设备,即可重温经典游戏。
  • 高性能机器用户:享受更高帧率和画质的游戏体验。

在开发与配置过程中,确保遵循原有项目的许可证与代码约定,避免引入不必要的安全风险。

综合评价

优点

  • 跨平台兼容性:实现多平台支持,便利用户。
  • 图形优化:提升视觉体验。
  • 输入处理灵活:提供多样化的输入还原经典游戏体验。

缺点

  • 性能依赖性强:硬件要求高,可能导致低配置机器运行困难。
  • 移植工作量大:软件适配和图形处理的优化耗费大量开发资源。

此项目在扩展经典游戏的生命力与提高用户体验上有其独特贡献,在多平台游戏领域的未来扩展具备广阔前景。

关于

GitHub 原始描述(英文)

Experimental modification of Mupen64GC using devkitRice.

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

简要分析

热度分
482
价值分
235
活跃状态
活跃

语言占比

Assembly
C
C++
Makefile
TeX

Release

贡献者

README

README : Wii64 / Cube64 Beta 1.1

LICENSE: This software is licensed under the GNU General Public License v2 which is available at: http://www.gnu.org/licenses/gpl-2.0.txt This requires any released modifications to be licensed similarly, and to have the source available.

Wii64/Cube64 and their respective logos are trademarks of Team Wii64
  and should not be used in unofficial builds.

QUICK USAGE:

  • ROMs can be z64 (big-endian) or v64 (little endian), or .n64, of any size
  • To install: Extract the contents of wii64-beta1.1.zip to the root of your SD card
  • For SD/USB: Put ROMs in the directory named /wii64/roms, All save types will automatically be placed in /wii64/saves
  • For DVD: ROMs may be anywhere on the disc (requires DVDxV2 on Wii)
  • Load the executable from the HBC or in the loader of your choice Once loaded, select ‘Load ROM’ and choose the source and select the ROM to load (Note: to go up a directory select ‘…’, B will exit the file browser)
  • Select ‘Play Game’ to play The game can be exited any time by pressing X and Y together on a GC pad or Classic Controller, 1 and 2 together on a Wiimote (only with Nunchuck attached), or the reset button (Note: this must be done to save your game; it will not be done automatically)

Controls:

  • Controls are now fully configurable so any button on your controller can be mapped
  • The controller configuration screen presents each N64 button and allows you to toggle through sources
  • There are 4 configuration slots for each type of controller
    • To load a different, previously saved configuration, select the slot, and click ‘Load’
    • After configuring the controls as desired, select the slot, and click ‘Save’
    • After saving different configurations to the slots, be sure to save your configs in the input tab of the settings frame
  • Clicking ‘Next Pad’ will cycle through the N64 controllers assigned
  • There is an option to invert the Y axis of the N64’s analog stick; by default this is ‘Normal Y’
  • The ‘Menu Combo’ configuration allows you to select a button combination to return to the menu

Settings:

  • General
    • Native Saves Device: Choose where to load and save native game saves
    • Save States Device: Choose where to load and save save states
    • Select CPU Core: Choose whether to play games with pure interpreter (better compatibility) or dynarec (better speed)
    • Save settings.cfg: Save all of these settings either SD or USB (to be loaded automatically next time)
  • Video
    • Show FPS: Display the framerate in the top-left corner of the screen
    • Screen Mode: Select the aspect ratio of the display; ‘Force 16:9’ will pillar-box the in-game display
    • CPU Framebuffer: Enable for games which only draw directly to the framebuffer (this will only need to be set for some homebrew demos)
    • 2xSaI Tex: Scale and Interpolate in-game textures (unstable on GC)
    • FB Textures: Enable framebuffer textures (necessary for some games to render everything correctly (e.g. Zelda Subscreen), but can impact performance; unstable on GC)
  • Input
    • Configure Input: Select controllers to use in game
    • Configure Paks: Select which controller paks to use in which controllers
    • Configure Buttons: Enter the controller configuration screen described above
    • Save Button Configs: Save all of the controller configuration slots to SD or USB
    • Auto Load Slot: Select which slot to automatically be loaded for each type of controller
  • Audio
    • Disable Audio: Select to mute the sound
  • Saves
    • Auto Save Native Saves: When enabled, the emulator will automatically load saves from the selected device on ROM load and save when returning to the menu or turning off the console
    • Copy Saves: Not yet implemented
    • Delete Saves: Not yet implemented

COMPATIBILITY LIST: Please visit http://emulatemii.com/wii64/compatList/ to see what runs Report any issues to http://code.google.com/p/mupen64gc/issues/list

CREDITS:

CHANGE LOG: Beta 1.1:

  • Dynarec improvements
    • Function linking
    • Recompiling more instructions (LWC1/LDC1/FP rounding/partially MTC0)
    • Execution from ROM
    • Branch comparisons compare 64-bits when necessary
  • glN64_GX improvements
    • Pillar-boxing ‘Force 16:9’ mode
    • Fixed projection matrix for Rects
    • Fixed viewport and scissoring edge cases
    • Fixed matrix transforms for several microcodes
    • Improved EFB handling wrt VI timing
    • Added upper limit to texture meta data
    • Improved FPS display and loading icon stability
  • Menu improvements
    • Reconfigurable button mapping
      • Save/Load button mapping from file
    • ROMs displayed in alphabetical order
    • Navigate filebrowser pages with R/L and +/- buttons
    • Navigate settings tabs with R/L and +/- buttons
    • Invalid ROM type detection
    • Error message if /wii64/roms doesn’t exist
    • Autosave is now the default setting
  • Changed C-Stick deadzone
  • Compiled with devkitPPC r19 / libOGC 1.8.1
  • Fixed resetting flashrom on ROM reset Wii:
  • Compiled with new libDI / DVDx V2
  • DVD reads are now done with direct PowerPC access
  • Controller improvements
    • Rumble for Wiimote-based input
    • Wiimote-only controls
    • IR/Accelerometer analog input
  • Fixed ROM cache bug for ROMs > ROM cache size GC:
  • Settings.cfg saving fixed
  • Moved TLB & blocks array to ARAM
  • Increased recompiler code cache size
  • ARAM ROM cache
  • 2Mb MEM1 ROM cache Beta 1:
  • Dynamic Recompiler
  • Expansion Pak Support (Wii only)
  • New menu system
    • Classic Controller support
    • Wiimote & nunchuck support
    • Settings saving
    • Auto load/save option for saves
  • rsp_hle RSP Plugin Port
  • rsp_hle-ppc RSP Plugin
  • glN64 features & bugfixes
    • 2xSaI
    • glN64 frame buffer textures (e.g. Zelda sub screen)
    • glN64 CPU Frame buffer (for homebrew demos)
  • libDI Wii DVD ROM loading support
  • Full TLB on Wii
  • Many many bug fixes
  • MEM2 ROM Cache for Wii improved (512MBiT ROM support)
  • Memory LUTs compacted r3xx:
  • glN64 Port
  • MEM2 ROM Cache for Wii (fits 32MB ROMs)
  • Save/Load on Wii Filesystem
  • Progressive video support
  • Embedded font support for Qoob users
  • Threaded audio
  • Various GX_gfx fixes
  • Reworked input plugin
    • Modular controller input
  • Developer Features submenu
    • Toggle FPS/Debug display r200:
  • Replaced GUI
    • Menu system
    • Menu file browser
  • Replaced file handling system
    • Modular file read/writes
  • Gameplay resumable after exiting to menu
  • Game reset option
  • Multiple ROMs may be loaded without crashing/freezing
  • Fancy splash screen and credits
  • Fixed software graphics support
  • Working audio (choppy)
  • Partial support for little-endian ROMs
  • Rumble pak support r46:
  • DVD loading r43:
  • GX graphics
  • Software graphics r40:
  • Any size ROM support from SD card
  • Pure Interpreter support only for now
  • Software GFX
  • Controller/Mempak support
  • Saving to SD card
  • Text UI
  • 4 MB RAM support (no expansion pack)

评论

暂无评论