mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-06-16 05:55:37 -04:00
Merge branch 'main' of https://github.com/TwilitRealm/dusk into randomizer
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
# IDE folders
|
||||
.idea/
|
||||
.vs/
|
||||
.zed/
|
||||
|
||||
# Caches
|
||||
__pycache__
|
||||
|
||||
@@ -4,10 +4,10 @@
|
||||
|
||||
- A Windows, Linux, or macOS device
|
||||
- iOS device connected to computer via USB
|
||||
- Dusklight IPA file (download the latest `Dusklight-vX.X.X-ios-arm64.ipa` from the [releases page](https://github.com/TwilitRealm/dusk/releases))
|
||||
- Game disc - `GZ2E01` (Gamecube USA) or `GZ2PE01` (Gamecube PAL)
|
||||
- Dusklight IPA file (download the latest `Dusklight-vX.X.X-ios-arm64.ipa` from the [releases page](https://github.com/TwilitRealm/dusklight/releases))
|
||||
- Legally acquired game disc - `GZ2E01` (Gamecube USA) or `GZ2PE01` (Gamecube PAL)
|
||||
|
||||
## 1. Install AltServer
|
||||
## 1. Install iloader
|
||||
|
||||
- Executable bundles can be installed from [iloader's main page](https://iloader.app/) or [their GitHub](https://github.com/nab138/iloader) for Windows, Linux, and macOS.
|
||||
- Windows WILL require iTunes to be installed
|
||||
@@ -16,21 +16,21 @@
|
||||
## 2. Enable Developer Mode (iOS 16+)
|
||||
|
||||
- On your iPhone, go to **Settings > Privacy & Security > Developer Mode**
|
||||
- Toggle it on and restart when prompted
|
||||
- Toggle it on, put in your device passcode, and restart when prompted
|
||||
|
||||
## 3. Install Dusklight on Your iPhone
|
||||
|
||||
1. Sign into your Apple ID (this is required for registering app IDs, it is sent securely and not stored by iloader)
|
||||
* You may be prompted to put in a code from your iOS device, do so
|
||||
1. Sign into your Apple ID (this is required for registering app IDs, it is sent securely directly to Apple and not stored by iloader)
|
||||
* You may be prompted to put in a code from your iOS device if you have 2FA enabled, do so
|
||||
2. Plug in your iOS device via USB into your PC. If you're missing a dependency, an error pop-up will tell you to install it
|
||||
* You will need to hit `Refresh` after plugging it in at this stage so that it can be detected, it does not automatically refresh
|
||||
3. Leave settings unchanged (the Anisette server should stay Sidestore (.io))
|
||||
3.(a) Installing SideStore directly is not required, but provides you a way to install Dusklight on your phone without being plugged into a computer later
|
||||
4. Press `Import IPA` and choose your downloaded `Dusk-v.X.X.X-ios-arm64.ipa`, it will begin installing on your device
|
||||
4. Press `Import IPA` and choose your downloaded `Dusklight-v.X.X.X-ios-arm64.ipa`, it will begin installing on your device
|
||||
|
||||
**NOTE:** *At various stages, you may be prompted to trust your device, do so*
|
||||
|
||||
## 3. Getting Dusk trusted
|
||||
## 3. Getting Dusklight trusted
|
||||
When installing sideloaded iOS applications, at first you will need to manually trust the app due to Apple's security policies
|
||||
* Go to **Settings > General > VPN & Device Management**
|
||||
* Tap the Apple ID you signed into iloader with under "Developer App" and tap **Trust**
|
||||
@@ -38,11 +38,11 @@ When installing sideloaded iOS applications, at first you will need to manually
|
||||
|
||||
## 4. Copy Files to Your iPhone
|
||||
|
||||
Transfer the IPA and game disc to your iPhone so they're accessible in the Files app. A few ways to do this:
|
||||
Transfer the game disc (and optionally, the Dusklight IPA) to your iPhone so they are accessible in the Files app. A few ways to do this:
|
||||
|
||||
- **AirDrop** - Right-click the files on your Mac and choose Share > AirDrop
|
||||
- **iCloud Drive** - Place files in iCloud Drive on your Mac and they'll sync to Files on your iPhone
|
||||
- **USB transfer** - Connect your iPhone and drag files via Finder's sidebar
|
||||
- **Cloud storage** - Upload to Google Drive, Dropbox, etc. and download on your iPhone
|
||||
|
||||
You may now use Dusklight on iOS, iPadOS!
|
||||
You may now use Dusklight on iOS and iPadOS!
|
||||
@@ -72,10 +72,6 @@ struct UserSettings {
|
||||
ConfigVar<bool> lockAspectRatio;
|
||||
ConfigVar<bool> enableFpsOverlay;
|
||||
ConfigVar<int> fpsOverlayCorner;
|
||||
ConfigVar<int> windowPositionX;
|
||||
ConfigVar<int> windowPositionY;
|
||||
ConfigVar<int> windowWidth;
|
||||
ConfigVar<int> windowHeight;
|
||||
} video;
|
||||
|
||||
struct {
|
||||
|
||||
@@ -674,7 +674,29 @@ static int daE_ARROW_Create(fopAc_ac_c* i_this) {
|
||||
}
|
||||
|
||||
int phase_state = dComIfG_resLoad(&a_this->mPhase, a_this->mResName);
|
||||
#if TARGET_PC
|
||||
static int s_create_frames = 0;
|
||||
static bool s_first_arrow = true;
|
||||
static fpc_ProcID s_last_scene_id = 0;
|
||||
|
||||
s_create_frames++;
|
||||
fpc_ProcID cur_scene_id = dStage_roomControl_c::getProcID();
|
||||
|
||||
if (cur_scene_id != s_last_scene_id) {
|
||||
s_first_arrow = true;
|
||||
s_last_scene_id = cur_scene_id;
|
||||
}
|
||||
|
||||
if (phase_state == cPhs_COMPLEATE_e && s_first_arrow && s_create_frames < 4) {
|
||||
return cPhs_INIT_e;
|
||||
}
|
||||
#endif
|
||||
if (phase_state == cPhs_COMPLEATE_e) {
|
||||
#if TARGET_PC
|
||||
s_create_frames = 0;
|
||||
s_first_arrow = false;
|
||||
#endif
|
||||
|
||||
a_this->mArrowType = fopAcM_GetParam(a_this) & 0xF;
|
||||
a_this->mFlags = fopAcM_GetParam(a_this) & 0xF0;
|
||||
|
||||
|
||||
@@ -188,6 +188,14 @@ void dMsgScrnTree_c::exec() {
|
||||
fukiAlpha(1.0f);
|
||||
}
|
||||
mpPmP_c->scale(g_MsgObject_HIO_c.mBoxWoodScaleX, g_MsgObject_HIO_c.mBoxWoodScaleY);
|
||||
|
||||
#if TARGET_PC
|
||||
const f32 hudScale = mDoGph_gInf_c::hudAspectScaleUp;
|
||||
if (hudScale > 1.0f) {
|
||||
field_0xc4->getPanePtr()->setBasePosition(J2DBasePosition_4);
|
||||
field_0xc4->getPanePtr()->scale(hudScale, 1.0f);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void dMsgScrnTree_c::draw() {
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
#include "dusk/settings.h"
|
||||
#include "dusk/config.hpp"
|
||||
#include "dusk/dusk.h"
|
||||
|
||||
#include <SDL3/SDL_video.h>
|
||||
|
||||
namespace dusk {
|
||||
|
||||
@@ -13,10 +10,6 @@ UserSettings g_userSettings = {
|
||||
.lockAspectRatio {"video.lockAspectRatio", false},
|
||||
.enableFpsOverlay {"game.enableFpsOverlay", false},
|
||||
.fpsOverlayCorner {"game.fpsOverlayCorner", 0},
|
||||
.windowPositionX {"video.windowPositionX", SDL_WINDOWPOS_UNDEFINED},
|
||||
.windowPositionY {"video.windowPositionY", SDL_WINDOWPOS_UNDEFINED},
|
||||
.windowWidth {"video.windowWidth", defaultWindowWidth * 2},
|
||||
.windowHeight {"video.windowHeight", defaultWindowHeight * 2},
|
||||
},
|
||||
|
||||
.audio = {
|
||||
@@ -186,10 +179,6 @@ void registerSettings() {
|
||||
Register(g_userSettings.video.lockAspectRatio);
|
||||
Register(g_userSettings.video.enableFpsOverlay);
|
||||
Register(g_userSettings.video.fpsOverlayCorner);
|
||||
Register(g_userSettings.video.windowPositionX);
|
||||
Register(g_userSettings.video.windowPositionY);
|
||||
Register(g_userSettings.video.windowWidth);
|
||||
Register(g_userSettings.video.windowHeight);
|
||||
|
||||
// Audio
|
||||
Register(g_userSettings.audio.masterVolume);
|
||||
|
||||
@@ -11,9 +11,7 @@
|
||||
#include <ranges>
|
||||
|
||||
#include "aurora/lib/window.hpp"
|
||||
#include "dusk/dusk.h"
|
||||
#include "dusk/io.hpp"
|
||||
#include "dusk/config.hpp"
|
||||
#include "input.hpp"
|
||||
#include "prelaunch.hpp"
|
||||
#include "window.hpp"
|
||||
@@ -171,18 +169,6 @@ void handle_event(const SDL_Event& event) noexcept {
|
||||
});
|
||||
}
|
||||
sConnectedGamepads.erase(event.gdevice.which);
|
||||
} else if (event.type == SDL_EVENT_WINDOW_MOVED || event.type == SDL_EVENT_WINDOW_RESIZED) {
|
||||
int x, y;
|
||||
if (SDL_GetWindowPosition(aurora::window::get_sdl_window(), &x, &y)) {
|
||||
getSettings().video.windowPositionX.setValue(x);
|
||||
getSettings().video.windowPositionY.setValue(y);
|
||||
}
|
||||
int width, height;
|
||||
if (SDL_GetWindowSize(aurora::window::get_sdl_window(), &width, &height)) {
|
||||
getSettings().video.windowWidth.setValue(width);
|
||||
getSettings().video.windowHeight.setValue(height);
|
||||
}
|
||||
config::Save();
|
||||
}
|
||||
input::handle_event(event);
|
||||
}
|
||||
|
||||
@@ -567,10 +567,10 @@ int game_main(int argc, char* argv[]) {
|
||||
config.cachePath = reinterpret_cast<const char*>(cachePathString.c_str());
|
||||
config.vsync = dusk::getSettings().video.enableVsync;
|
||||
config.startFullscreen = dusk::getSettings().video.enableFullscreen;
|
||||
config.windowPosX = dusk::getSettings().video.windowPositionX;
|
||||
config.windowPosY = dusk::getSettings().video.windowPositionY;
|
||||
config.windowWidth = dusk::getSettings().video.windowWidth;
|
||||
config.windowHeight = dusk::getSettings().video.windowHeight;
|
||||
config.windowPosX = -1;
|
||||
config.windowPosY = -1;
|
||||
config.windowWidth = defaultWindowWidth * 2;
|
||||
config.windowHeight = defaultWindowHeight * 2;
|
||||
config.desiredBackend = ResolveDesiredBackend(parsed_arg_options);
|
||||
config.logCallback = &aurora_log_callback;
|
||||
config.logLevel = startupLogLevel;
|
||||
|
||||
Reference in New Issue
Block a user