diff --git a/.gitignore b/.gitignore index 672d4a0..deda879 100644 --- a/.gitignore +++ b/.gitignore @@ -35,7 +35,6 @@ *.3dsx *.elf *.cia -*.smdh build/ source/*.old @@ -49,3 +48,6 @@ source/main.c.old .DS_Store .AppleDouble .LSOverride +makerom +bannertool +XO-game.* \ No newline at end of file diff --git a/Makefile b/Makefile index be400bc..43eb0da 100644 --- a/Makefile +++ b/Makefile @@ -63,8 +63,7 @@ CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 ASFLAGS := -g $(ARCH) LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) -LIBS := -lctru -lm -LIBS := -lcitro2d -lcitro3d -lctru -lm +LIBS := -lcitro2d -lcitro3d -lctru #--------------------------------------------------------------------------------- # list of directories containing libraries, this must be the top level containing # include and lib diff --git a/README.md b/README.md index 68088b9..a3722f2 100644 --- a/README.md +++ b/README.md @@ -6,4 +6,14 @@ Hombrew Tic-tac-toe for 3ds 1. Change drawing to image 1. Sound effects 1. Save statistics -1. Multiplayer \ No newline at end of file +1. Multiplayer + +## How to build: +1. Install devkitPro for 3ds +1. Install makerom +1. Clone this repo +1. Run `make && ./makerom -f cia -o XO-game.cia -rsf cia.rsf -target t -exefslogo -elf XO-game.elf -icon icon.smdh` in repo directory +1. Install cia file on your 3ds + +## Known bugs: +1. No icon, banner and music in home menu diff --git a/banner.wav b/banner.wav old mode 100644 new mode 100755 index a50f819..76997f5 Binary files a/banner.wav and b/banner.wav differ diff --git a/cia.rsf b/cia.rsf new file mode 100644 index 0000000..c5f5a6d --- /dev/null +++ b/cia.rsf @@ -0,0 +1,285 @@ +BasicInfo: + Title : "XO-game" + ProductCode : "CTR-H-XOGA" + Logo : Licensed + +RomFs: + RootPath : $(APP_ROMFS) + + +TitleInfo: + Category : Application + UniqueId : 0x43918 + +Option: + UseOnSD : true # true if App is to be installed to SD + FreeProductCode : true # Removes limitations on ProductCode + MediaFootPadding : false # If true CCI files are created with padding + EnableCrypt : false # Enables encryption for NCCH and CIA + EnableCompress : true # Compresses where applicable (currently only exefs:/.code) + +AccessControlInfo: + CoreVersion : 2 + + # Exheader Format Version + DescVersion : 2 + + # Minimum Required Kernel Version (below is for 4.5.0) + ReleaseKernelMajor : "02" + ReleaseKernelMinor : "33" + + # ExtData + UseExtSaveData : false # enables ExtData + #ExtSaveDataId : 0x300 # only set this when the ID is different to the UniqueId + + # FS:USER Archive Access Permissions + # Uncomment as required + FileSystemAccess: + - CategorySystemApplication + - CategoryHardwareCheck + - CategoryFileSystemTool + - Debug + - TwlCardBackup + - TwlNandData + #- Boss + - DirectSdmc + - Core + #- CtrNandRo + #- CtrNandRw + #- CtrNandRoWrite + - CategorySystemSettings + #- CardBoard + #- ExportImportIvs + - DirectSdmcWrite + #- SwitchCleanup + #- SaveDataMove + #- Shop + #- Shell + #- CategoryHomeMenu + #- SeedDB + IoAccessControl: + #- FsMountNand + #- FsMountNandRoWrite + - FsMountTwln + #- FsMountWnand + - FsMountCardSpi + - UseSdif3 + #- CreateSeed + - UseCardSpi + + # Process Settings + MemoryType : Application # Application/System/Base + SystemMode : 64MB # 64MB(Default)/96MB/80MB/72MB/32MB + IdealProcessor : 0 + AffinityMask : 1 + Priority : 16 + MaxCpu : 0x9E # Default + HandleTableSize : 0x200 + DisableDebug : false + EnableForceDebug : false + CanWriteSharedPage : true + CanUsePrivilegedPriority : false + CanUseNonAlphabetAndNumber : true + PermitMainFunctionArgument : true + CanShareDeviceMemory : true + RunnableOnSleep : false + SpecialMemoryArrange : true + + # New3DS Exclusive Process Settings + SystemModeExt : Legacy # Legacy(Default)/124MB/178MB Legacy:Use Old3DS SystemMode + CpuSpeed : 804MHz # 268MHz(Default)/804MHz + EnableL2Cache : true # false(default)/true + CanAccessCore2 : true + + # Virtual Address Mappings + IORegisterMapping: + - 1ff00000-1ff7ffff # DSP memory + MemoryMapping: + - 1f000000-1f5fffff:r # VRAM + + # Accessible SVCs, : + SystemCallAccess: + ControlMemory: 1 + QueryMemory: 2 + ExitProcess: 3 + GetProcessAffinityMask: 4 + SetProcessAffinityMask: 5 + GetProcessIdealProcessor: 6 + SetProcessIdealProcessor: 7 + CreateThread: 8 + ExitThread: 9 + SleepThread: 10 + GetThreadPriority: 11 + SetThreadPriority: 12 + GetThreadAffinityMask: 13 + SetThreadAffinityMask: 14 + GetThreadIdealProcessor: 15 + SetThreadIdealProcessor: 16 + GetCurrentProcessorNumber: 17 + Run: 18 + CreateMutex: 19 + ReleaseMutex: 20 + CreateSemaphore: 21 + ReleaseSemaphore: 22 + CreateEvent: 23 + SignalEvent: 24 + ClearEvent: 25 + CreateTimer: 26 + SetTimer: 27 + CancelTimer: 28 + ClearTimer: 29 + CreateMemoryBlock: 30 + MapMemoryBlock: 31 + UnmapMemoryBlock: 32 + CreateAddressArbiter: 33 + ArbitrateAddress: 34 + CloseHandle: 35 + WaitSynchronization1: 36 + WaitSynchronizationN: 37 + SignalAndWait: 38 + DuplicateHandle: 39 + GetSystemTick: 40 + GetHandleInfo: 41 + GetSystemInfo: 42 + GetProcessInfo: 43 + GetThreadInfo: 44 + ConnectToPort: 45 + SendSyncRequest1: 46 + SendSyncRequest2: 47 + SendSyncRequest3: 48 + SendSyncRequest4: 49 + SendSyncRequest: 50 + OpenProcess: 51 + OpenThread: 52 + GetProcessId: 53 + GetProcessIdOfThread: 54 + GetThreadId: 55 + GetResourceLimit: 56 + GetResourceLimitLimitValues: 57 + GetResourceLimitCurrentValues: 58 + GetThreadContext: 59 + Break: 60 + OutputDebugString: 61 + ControlPerformanceCounter: 62 + CreatePort: 71 + CreateSessionToPort: 72 + CreateSession: 73 + AcceptSession: 74 + ReplyAndReceive1: 75 + ReplyAndReceive2: 76 + ReplyAndReceive3: 77 + ReplyAndReceive4: 78 + ReplyAndReceive: 79 + BindInterrupt: 80 + UnbindInterrupt: 81 + InvalidateProcessDataCache: 82 + StoreProcessDataCache: 83 + FlushProcessDataCache: 84 + StartInterProcessDma: 85 + StopDma: 86 + GetDmaState: 87 + RestartDma: 88 + DebugActiveProcess: 96 + BreakDebugProcess: 97 + TerminateDebugProcess: 98 + GetProcessDebugEvent: 99 + ContinueDebugEvent: 100 + GetProcessList: 101 + GetThreadList: 102 + GetDebugThreadContext: 103 + SetDebugThreadContext: 104 + QueryDebugProcessMemory: 105 + ReadProcessMemory: 106 + WriteProcessMemory: 107 + SetHardwareBreakPoint: 108 + GetDebugThreadParam: 109 + ControlProcessMemory: 112 + MapProcessMemory: 113 + UnmapProcessMemory: 114 + CreateCodeSet: 115 + CreateProcess: 117 + TerminateProcess: 118 + SetProcessResourceLimits: 119 + CreateResourceLimit: 120 + SetResourceLimitValues: 121 + AddCodeSegment: 122 + Backdoor: 123 + KernelSetState: 124 + QueryProcessMemory: 125 + + # Service List + # Maximum 34 services (32 if firmware is prior to 9.6.0) + ServiceAccessControl: + - APT:U + - ac:u + - am:net + #- boss:U + - cam:u + #- cecd:u + #- cfg:nor + - cfg:u + #- csnd:SND + - dsp::DSP + #- frd:u + - fs:USER + - gsp::Gpu + - gsp::Lcd + - hid:USER + - http:C + - ir:rst + - ir:u + - ir:USER + #- mic:u + #- ndm:u + #- news:s + - nwm::EXT + - nwm::UDS + - ptm:sysm + - ptm:u + - pxi:dev + - soc:U + - ssl:C + #- y2r:u + +SystemControlInfo: + SaveDataSize: 64KB # Change if the app uses savedata + RemasterVersion: 1 + StackSize: 0x40000 + + # Modules that run services listed above should be included below + # Maximum 48 dependencies + # : + Dependency: + ac: 0x0004013000002402 + act: 0x0004013000003802 + am: 0x0004013000001502 + boss: 0x0004013000003402 + camera: 0x0004013000001602 + cecd: 0x0004013000002602 + cfg: 0x0004013000001702 + codec: 0x0004013000001802 + csnd: 0x0004013000002702 + dlp: 0x0004013000002802 + dsp: 0x0004013000001a02 + friends: 0x0004013000003202 + gpio: 0x0004013000001b02 + gsp: 0x0004013000001c02 + hid: 0x0004013000001d02 + http: 0x0004013000002902 + i2c: 0x0004013000001e02 + ir: 0x0004013000003302 + mcu: 0x0004013000001f02 + mic: 0x0004013000002002 + ndm: 0x0004013000002b02 + news: 0x0004013000003502 + #nfc: 0x0004013000004002 + nim: 0x0004013000002c02 + nwm: 0x0004013000002d02 + pdn: 0x0004013000002102 + ps: 0x0004013000003102 + ptm: 0x0004013000002202 + #qtm: 0x0004013020004202 + ro: 0x0004013000003702 + socket: 0x0004013000002e02 + spi: 0x0004013000002302 + ssl: 0x0004013000002f02 \ No newline at end of file diff --git a/icon.smdh b/icon.smdh new file mode 100644 index 0000000..c38eb8a Binary files /dev/null and b/icon.smdh differ diff --git a/source/main.cpp b/source/main.cpp index 70184e9..fcbf871 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -4,6 +4,9 @@ #include #include +//File io + + int player = 1; //1 - X 2 - O bool win = false; @@ -289,7 +292,7 @@ int main(int argc, char **argv) { } } C2D_TextBufDelete(buf); - C2D_SceneBegin(bottom); + } else if(all9) { @@ -300,8 +303,8 @@ int main(int argc, char **argv) { C2D_TextOptimize(&text); C2D_DrawText(&text, C2D_WithColor, 10, 10, 0, 3.5f, 3.5f, C2D_Color32(0xFF, 0xFF, 0xFF, 0xFF)); C2D_TextBufDelete(buf); - C2D_SceneBegin(bottom); } + C2D_SceneBegin(bottom); //press A to restart if(kHeld & KEY_A) {