Initial commit

This commit is contained in:
Brendan Fletcher 2020-03-04 02:05:06 -05:00
commit 6482429a81
18 changed files with 15035 additions and 0 deletions

16
.gitignore vendored Normal file
View file

@ -0,0 +1,16 @@
*.8xp
*.8xk
*.8xv
*.bin
*.lab
*.gb
*.gbc
*.sav
*.exe
*.lst
*.aps
*.vcxproj.*
.vs/
.DS_Store
Debug/
Release/

3
.gitmodules vendored Normal file
View file

@ -0,0 +1,3 @@
[submodule "tiboyse_makeapp/rabbitsign"]
path = tiboyse_makeapp/rabbitsign
url = https://github.com/abbrev/rabbitsign

92
app.inc Normal file
View file

@ -0,0 +1,92 @@
; Fatal error macro. Displays message prefixed with "error"
; and returns with error code
#define fatal(str,return) .error str
#macro defpage(page, appname)
#if page = 0
#ifndef gpage
#define free_space 0
#define gpage 0
#ifndef appname
.echo "Warning: No name given, using \"Default\""
#define appname "Default"
#endif
.org $4000
.db $80,$0F,0,0,0,0
.db $80,$12,1,4
.db $80,$21,1
.db $80,$31,1
.db $80,$48
#define gappname eval(appname)
_ .db appname
#define apnamlen eval($ - -_)
echo_fill(apnamlen,"-","------------------------------------------")
.echo "Beginning APP \"",appname,"\", courtesy of SPASM macros"
echo_fill(apnamlen,"-","------------------------------------------")
#if apnamlen <= 8
.fill 8-apnamlen,' '
#else
#define err "App name is ",apnamlen-8," character(s) too long."
fatal(err,1)
#endif
.db $80,$81,0
.db $80,$90
.db $03,$26,$09,$04,$04,$06f,$1b,$80
.db $02,$0d,$40
.db $a1,$6b,$99,$f6,$59,$bc,$67
.db $f5,$85,$9c,$09,$6c,$0f,$b4,$03,$9b,$c9
.db $03,$32,$2c,$e0,$03,$20,$e3,$2c,$f4,$2d
.db $73,$b4,$27,$c4,$a0,$72,$54,$b9,$ea,$7c
.db $3b,$aa,$16,$f6,$77,$83,$7a,$ee,$1a,$d4
.db $42,$4c,$6b,$8b,$13,$1f,$bb,$93,$8b,$fc
.db $19,$1c,$3c,$ec,$4d,$e5,$75
.db $80,$7F,0,0,0,0
.dw 0,0,0,0,0,0,0,0
#else
fatal("There was already a page 0.",1)
#endif
#else
#if ($ & $0000FFFF) > $8000
#define err "Page ",gpage," went over bounds by ",$-$8000," bytes."
fatal(err, 1)
#endif
#if page <= gpage
fatal("Your page numbers must increase.")
#endif
#if page > gpage+1
.echo "Warning: Skipping page ",gpage+1," at user request."
#endif
#define free_space eval(free_space + $8000-($ & $0000FFFF))
.echo "Page ",gpage," free space: ",$8000-($ & $0000FFFF)
.block ($8000-($ & $0000FFFF) + ((page-gpage-1)*$4000))
#define gpage eval(page)
.org $4000+(gpage*$10000)
#endif
#endmacro
#macro validate
#if ($ & $0000FFFF) > $8000
#define err "Page ",gpage," went over bounds by ",$-$8000," bytes."
fatal(err, 1)
#else
.echo "Page ",gpage," free space: ",$8000-($ & $0000FFFF)
#define free_space eval(free_space + $8000 - ($ & $0000FFFF))
.echo "Success: Page sizes validated and \"",gappname,"\" is ready for signing."
.echo " In ",gpage+1," page(s), ",free_space," bytes are available."
#endif
#endmacro
#macro echo_fill(times, char, base)
#if times > 0
#define base base,char
echo_fill(eval(times-1), char, base)
#else
.echo base
#endif
#endmacro
#define .defpage defpage(
#define .validate validate

1780
hardware.z80 Normal file

File diff suppressed because it is too large Load diff

7828
opcodes_crazy.z80 Normal file

File diff suppressed because it is too large Load diff

2767
render.z80 Normal file

File diff suppressed because it is too large Load diff

136
render_ram.z80 Normal file
View file

@ -0,0 +1,136 @@
spriteloop_gray:
ld a,(de)
xor (hl)
and iyh
xor (hl)
exx
ld c,a
ld a,(bc)
sprite_palette_smc_gray = $+1
call 0
ld e,a
ld a,(de)
exx
ld c,a
xor (hl)
and iyl
xor (hl)
ld (hl),a
ld a,(de)
xor c
and iyl
xor c
ld (de),a
dec e
dec l
spriteloop:
ld a,(de)
xor (hl)
and iyh
xor (hl)
exx
ld c,a
ld a,(bc)
sprite_palette_smc = $+1
call 0
sprite_flip_smc:
inc l
inc l
ld e,a
ld a,(de)
exx
ld c,a
xor (hl)
and iyl
xor (hl)
ld (hl),a
ld a,(de)
xor c
and iyl
xor c
ld (de),a
dec de
dec hl
sprite_loop_smc = $+1
djnz spriteloop
sprite_next_smc = $+1
jp draw_next_sprite
;Input: DE = pointer to first tile, DE' = pointer to buffer, B = row within tile, C = rows to draw, B' = columns to draw, C' = mask
rasterlines:
ex de,hl
ld a,8
sub b
ld b,a
rasterloop0:
push bc
push hl
exx
bufferHeight = $+1
ld hl,128 + 15
add hl,de
ex de,hl
push de
exx
ld a,16
sub b
sub b
rasterloop1:
ld e,(hl)
ld d,tileLUT >> 8
ex de,hl
add a,(hl)
rastersmc1:
inc h
ld h,(hl)
ld l,a
ld a,c
sub b
jr nc,_
ld b,c
xor a
_
ld c,a
rasterloop2:
nop \ nop \ nop \ nop \ nop ;allow room for palette mod
nop \ nop \ nop \ nop ;allow room for rotation mod
dec l
exx
ld (de),a
xor (hl)
and c
xor (hl)
ld (hl),a
inc e
inc l
exx
nop \ nop \ nop \ nop \ nop ;allow room for second palette mod
nop \ nop \ nop \ nop ;allow room for second rotation mod
inc l
exx
ld (de),a
xor (hl)
and c
xor (hl)
ld (hl),a
inc de
inc hl
exx
djnz rasterloop2
ld a,e
add a,$20
ld l,a
ld a,d
jr nc,_
inc a
xor d
and %00000011
xor d
_
ld h,a
ld b,8
xor a
cp c
jp nz,0 ;rasterloop1
jp 0 ;rastercolumnend

195
setup.z80 Normal file
View file

@ -0,0 +1,195 @@
setup:
ld a,2
out (5),a
ld hl,render_ram_code
ld de,render_ram_code_start
ld bc,render_ram_code_size
ldir
xor a
out (5),a
ld hl,$E000-1
ld de,page3code
ld bc,page3codesize + 1
or a ;sound off
call decompress_page3code
ld hl,TimerInterruptBackup
ld de,TimerInterruptReplacement
ld bc,16
ldir
ld a,(maxRamPage)
add a,$81
ld (firstInvalidRamPage),a
ld a,(contrast)
add a,$D8
ld (mycontrast),a
ld a,(CartridgeType)
ld (mbc),a
ld a,$80
out ($10),a
out ($28),a
ld a,$10
out ($27),a
ld a,im2lut >> 8
ld i,a
im 2
xor a
out (4),a
inc a
out (3),a
ld a,$44
out ($36),a
ld a,2
out ($37),a
dec a
out ($38),a
ld hl,hiram_init
ld de,$ff00
ld bc,$0100
ldir
ld hl,$8000
ld (soundOutputs),hl
ld c,$8F
call DisplayNintendo
ld hl,$8000
ld de,$8001
ld bc,$1FFF
ld (hl),l
ldir
ld a,5
out ($10),a
call clear_screen_edges + (rompage3code - $4000)
ld a,3
out ($20),a
ld a,$0c
out ($2c),a
ld c,0
ld de,(opcodetable_B & $FF00) + (opcodetable >> 8)
ld iy,$FFFE
ld sp,$0100
ld a,200
out ($38),a
ld a,1
ex af,af'
in a,(6)
ld (basepage),a
dec a
jp setcartrom_abs
;Inputs: NC=sound off, C=sound on
; HL=output location minus 1
; DE=location of compressed code
; BC=size of compressed code plus 1
decompress_page3code:
push af
decompressloop1:
cpi
jp po,decompressend
ex de,hl
decompressloop2:
ld a,(hl)
and %11100111
cp $C7
jr z,_
ldi
jp pe,decompressloop2
decompressend:
pop af
ret
_
xor (hl)
inc hl
ex de,hl
jr nz,_
pop af
push af
jr c,decompresswithsound
ld (hl),$E1 ;pop hl
inc hl
ld (hl),$44 ;ld b,h
inc hl
ld (hl),$62 ;ld h,d
inc hl
ld (hl),$66 ;ld h,(hl)
inc hl
ld (hl),$E9 ;jp (hl)
inc hl
ld (hl),$00 ;nop
inc hl
ld (hl),$00 ;nop
jr decompressloop1
_
cp $08
jr nz,_
ld (hl),$68 ;ld l,b
inc hl
ld (hl),$63 ;ld h,e
inc hl
ld (hl),$66 ;ld h,(hl)
inc hl
ld (hl),$E9 ;jp (hl)
jr decompressloop1
_
cp $10
jr nz,_
decompresswithsound:
ld (hl),$FB ;ei
inc hl
ld (hl),$E1 ;pop hl
inc hl
ld (hl),$F3 ;di
inc hl
ld (hl),$44 ;ld b,h
inc hl
ld (hl),$62 ;ld h,d
inc hl
ld (hl),$66 ;ld h,(hl)
inc hl
ld (hl),$E9 ;jp (hl)
jr decompressloop1
_
ld a,(de)
inc de
dec bc
ld (hl),$FD
inc hl
ld (hl),$FD
_
inc hl
ld (hl),$FD
dec a
jr nz,-_
jr decompressloop1
hiram_init:
.db 0,0,0,0,0,$00,$00,$00,0,0,0,0,0,0,0,0
.db $80,$BF,$F3,0,$BF,0,$3F,$00,0,$BF,$7F,$FF,$9F,0,$BF,0
.db $FF,$00,$00,$BF,$77,$F3,$F1,0,0,0,0,0,0,0,0,0
.db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.db $91,0,$00,$00,0,$00,0,$FC,$FF,$FF,$00,$00,0,0,0,0
.block $b0
render_ram_code:
.org $DF00
render_ram_code_start:
#include "render_ram.z80"
render_ram_code_size = $ - render_ram_code_start
.org render_ram_code + render_ram_code_size
.echo "RAM-based render code: ", render_ram_code_size

BIN
splash.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 830 B

35
ti83small.inc Normal file
View file

@ -0,0 +1,35 @@
#define bcall(xxxx) rst 28h \ .dw xxxx
_JForceCmdNoChar .equ 4027h
_ChkFindSym .equ 42F1h
_EnoughMem .equ 42FDh
_PutC .equ 4504h
_DispHL .equ 4507h
_PutS .equ 450Ah
_ClrScrnFull .equ 4546h
_HomeUp .equ 4558h
_getkey .equ 4972h
_CreateAppVar .equ 4E6Ah
_FlashWriteDisable .equ 4F3Ch
_DelVarArc .equ 4FC6h
_Arc_Unarc .equ 4FD8h ;checks for low battery
_FindSwapSector .equ 5095h
_CopyFlashPage .equ 5098h
_FindAppNumPages .equ 509Bh
arcInfo .equ 83EEh
contrast .equ 8447h
OP1 .equ 8478h
OP4 .equ 8499h
iMathPtr5 .equ 84DBh
onSP .equ 85BCh
saveSScreen .equ 86ECh
flags .equ 89F0h
pagedCount .equ 9834h
pagedBuf .equ 983Ah
appBackUpScreen .equ 9872h
AppVarObj .equ 15h ;application variable
previousEntriesMP .equ 977Eh
gbufMP .equ 9A7Eh

1554
tiboyse.z80 Normal file

File diff suppressed because it is too large Load diff

212
tiboyse_makeapp/makeapp.cpp Normal file
View file

@ -0,0 +1,212 @@
#include <cstring>
#include <cstdlib>
#include <fstream>
#include <iostream>
#include <limits>
#include <string>
#include "rabbitsign.h"
#ifdef USE_WINDOWS_RESOURCE
#include <Windows.h>
#include "resource.h"
#endif
const unsigned long TIBOY_SIZE = 0x4000 - 96;
void wait()
{
std::cout << "< Press Enter to continue >";
getchar();
}
unsigned char getHex(char letter)
{
if(letter >= '0' && letter <= '9') return letter - '0';
if(letter >= 'A' && letter <= 'Z') return letter - 'A' + 0xA;
if(letter >= 'a' && letter <= 'z') return letter - 'a' + 0xA;
return 0;
}
std::string escape(std::string& name)
{
std::string valid = name;
size_t search = std::string::npos;
while((search = name.find('\\',search+1)) != std::string::npos)
{
name.replace(search, 3, 1, getHex(name[search+1])*16 + getHex(name[search+2]));
valid.replace(search, 3, 1, '-');
}
return valid;
}
int main(int argc, char** argv)
{
std::cout << "ROM to APP converter for TI-Boy Beta 0.2.04\n\n";
if (argc < 3)
{
atexit(wait);
}
std::string romfilename;
if(argc >= 2)
{
romfilename = argv[1];
}
else
{
std::cout << "Enter the filepath/name of the ROM to convert: ";
std::getline(std::cin, romfilename);
}
std::ifstream romfile;
romfile.open(romfilename.c_str(), std::ios::binary | std::ios::ate);
if(romfile.fail())
{
std::cout << "Error opening ROM file!\n";
return EXIT_FAILURE;
}
unsigned long romfilesize = (unsigned long)romfile.tellg();
romfile.seekg(0, std::ios::beg);
if (romfilesize & 0x3FFF)
{
std::cout << "Warning, ROM file is not a multiple of 16KB!\n";
std::cout << "Ignoring last " << (romfilesize & 0x3FFF) << " bytes.\n\n";
romfilesize &= ~0x3FFF;
}
char* romdata = new char[romfilesize];
romfile.read(romdata, romfilesize);
romfile.close();
char internal_name[16];
strncpy(internal_name, romdata+0x134, 15);
internal_name[15] = 0;
std::cout << "Successfully opened ROM: " << internal_name << "\n";
std::string appname, appfilename;
size_t maxName = (romdata[0x149] == 3 ? 7 : 8);
if(argc >= 3)
{
appfilename = escape(appname = argv[2]);
}
if(argc < 3 || appname.length() > maxName)
{
if (argc >= 3)
{
atexit(wait);
}
do
{
std::cout << "Enter a name for the APP (" << maxName << " char max): ";
std::cin >> appname;
std::cin.ignore();
appfilename = escape(appname);
}
while(appname.length() > maxName);
}
std::string appPath = argv[0];
appPath = appPath.substr(0,appPath.find_last_of('\\')+1);
#ifdef USE_WINDOWS_RESOURCE
HRSRC resourceInfo = FindResource(nullptr, MAKEINTRESOURCE(TIBOYSE_RESOURCE), RT_RCDATA);
if (resourceInfo == nullptr)
{
std::cout << "Error: Could not find embedded tiboyse resource\n";
return EXIT_FAILURE;
}
if (SizeofResource(nullptr, resourceInfo) != TIBOY_SIZE)
{
std::cout << "Error: Embedded tiboyse resource seems to be corrupt (incorrect size)\n";
return EXIT_FAILURE;
}
HGLOBAL resourceData = LoadResource(nullptr, resourceInfo);
if (resourceData == nullptr)
{
std::cout << "Error: Failed to load embedded tiboyse resource\n";
return EXIT_FAILURE;
}
const void* resourcePtr = LockResource(resourceData);
if (resourcePtr == nullptr)
{
std::cout << "Error: Failed to lock embedded tiboyse resource\n";
return EXIT_FAILURE;
}
#else
std::ifstream tiboyfile;
tiboyfile.open((appPath+"tiboyse.bin").c_str(), std::ios::binary | std::ios::ate);
if(tiboyfile.fail())
{
std::cout << "Error: Could not locate vital file tiboyse.bin\n";
return EXIT_FAILURE;
}
if((unsigned long)tiboyfile.tellg() != TIBOY_SIZE)
{
std::cout << "Error: tiboyse.bin seems to be corrupt (incorrect file size)\n";
return EXIT_FAILURE;
}
tiboyfile.seekg(0, std::ios::beg);
#endif
unsigned long newsize = romfilesize;
unsigned char comp_byte = romdata[--newsize];
if(comp_byte == 0x00 || comp_byte == 0xFF)
while(romdata[--newsize] == comp_byte);
romfilesize = (newsize | 0x3FFF) + 1;
char* appdata = (char*)malloc(TIBOY_SIZE + romfilesize);
#ifdef USE_WINDOWS_RESOURCE
memcpy(appdata, resourcePtr, TIBOY_SIZE);
#else
tiboyfile.read(appdata, TIBOY_SIZE);
tiboyfile.close();
#endif
memcpy(appdata + 0x0012, appname.c_str(), appname.length());
memcpy(appdata + TIBOY_SIZE, romdata + TIBOY_SIZE, romfilesize - TIBOY_SIZE);
memcpy(appdata + romfilesize, romdata, TIBOY_SIZE);
RSKey *key = rs_key_new();
rs_key_find_for_id(key, 0x0104, 0);
RSProgram *prgm = rs_program_new();
prgm->calctype = RS_CALC_TI83P;
prgm->datatype = RS_DATA_APP;
prgm->data = (unsigned char*)appdata;
prgm->length = prgm->length_a = TIBOY_SIZE + romfilesize;
rs_repair_ti8x_app(prgm, (RSRepairFlags)((int)RS_IGNORE_ALL_WARNINGS | (int)RS_FIX_PAGE_COUNT));
if (rs_sign_ti8x_app(prgm, key, 0) == RS_SUCCESS)
{
std::string binout = appPath + appfilename + ".8xk";
FILE *appfile = fopen(binout.c_str(), "wb");
if (rs_write_program_file(prgm, appfile, 0, 0, 0, (RSOutputFlags)0) == RS_SUCCESS)
{
std::cout << "\nGenerated a " << romfilesize + 0x4000 << " byte (" << romfilesize/0x4000+1 << " page) APP.\n\n";
if((unsigned char)romdata[0x143] == 0xC0)
std::cout << "Warning: This is a Game Boy Color ROM. TI-Boy does not support GBC.\n\n";
if(romfilesize > 1540096)
std::cout << "Warning: This APP will not fit on any TI-83+ or TI-84+ calculator.\n\n";
else if(romfilesize > 491520)
std::cout << "Warning: This APP will only fit on a Silver Edition calculator.\n\n";
if(romdata[0x149] == 3)
std::cout << "Warning: This APP may require more than 48KB RAM to emulate.\nIt might not work on new TI-84+ models.\nHowever, Pokemon Red/Blue/Yellow have been confirmed to work on all models.\nTo see if your model has 128KB RAM, check the serial number on the back.\nIf the ending letter is from A-G or has no letter, there is enough RAM.\nOtherwise, just test it and see if it gives an error.\n\n";
}
else
{
std::cout << "\nAn error occurred when writing to the output file!\n\n";
}
fclose(appfile);
}
else
{
std::cout << "\nAn error occurred when signing the application!\n\n";
}
return EXIT_SUCCESS;
}

@ -0,0 +1 @@
Subproject commit f3b65118b2fa3738eb1d5167b63afdace31eee95

View file

@ -0,0 +1,195 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClCompile Include="rabbitsign\src\app8x.c" />
<ClCompile Include="rabbitsign\src\app9x.c" />
<ClCompile Include="rabbitsign\src\apps.c" />
<ClCompile Include="rabbitsign\src\autokey.c" />
<ClCompile Include="rabbitsign\src\error.c" />
<ClCompile Include="rabbitsign\src\graphlink.c" />
<ClCompile Include="rabbitsign\src\header.c" />
<ClCompile Include="rabbitsign\src\input.c" />
<ClCompile Include="rabbitsign\src\keys.c" />
<ClCompile Include="rabbitsign\src\md5.c" />
<ClCompile Include="rabbitsign\src\mem.c" />
<ClCompile Include="rabbitsign\src\mpz.c" />
<ClCompile Include="rabbitsign\src\os8x.c" />
<ClCompile Include="rabbitsign\src\output.c" />
<ClCompile Include="rabbitsign\src\output8x.c" />
<ClCompile Include="rabbitsign\src\output9x.c" />
<ClCompile Include="rabbitsign\src\program.c" />
<ClCompile Include="rabbitsign\src\rabin.c" />
<ClCompile Include="rabbitsign\src\rsa.c" />
<ClCompile Include="rabbitsign\src\typestr.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="rabbitsign\src\autokeys.h" />
<ClInclude Include="rabbitsign\src\internal.h" />
<ClInclude Include="rabbitsign\src\md5.h" />
<ClInclude Include="rabbitsign\src\mpz.h" />
<ClInclude Include="rabbitsign\src\rabbitsign.h" />
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>15.0</VCProjectVersion>
<ProjectGuid>{B3E1064D-D26A-431B-B324-74C98F946F6C}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>rabbitsign</RootNamespace>
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\$(ProjectName)\</OutDir>
<IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\$(ProjectName)\</OutDir>
<IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\$(ProjectName)\</OutDir>
<IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\$(ProjectName)\</OutDir>
<IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;HAVE_MEMCPY;HAVE_STDLIB_H;HAVE_STRING_H;STDC_HEADERS=1;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<TreatWarningAsError>true</TreatWarningAsError>
<DisableSpecificWarnings>4146;4244;4267</DisableSpecificWarnings>
<WarningLevel>Level3</WarningLevel>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;HAVE_MEMCPY;HAVE_STDLIB_H;HAVE_STRING_H;STDC_HEADERS=1;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<TreatWarningAsError>true</TreatWarningAsError>
<DisableSpecificWarnings>4146;4244;4267</DisableSpecificWarnings>
<WarningLevel>Level3</WarningLevel>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<Optimization>MinSpace</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;HAVE_MEMCPY;HAVE_STDLIB_H;HAVE_STRING_H;STDC_HEADERS=1;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<TreatWarningAsError>true</TreatWarningAsError>
<DisableSpecificWarnings>4146;4244;4267</DisableSpecificWarnings>
<WarningLevel>Level3</WarningLevel>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<Optimization>MinSpace</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;HAVE_MEMCPY;HAVE_STDLIB_H;HAVE_STRING_H;STDC_HEADERS=1;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<TreatWarningAsError>true</TreatWarningAsError>
<DisableSpecificWarnings>4146;4244;4267</DisableSpecificWarnings>
<WarningLevel>Level3</WarningLevel>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View file

@ -0,0 +1,2 @@
#pragma once
#define TIBOYSE_RESOURCE 101

BIN
tiboyse_makeapp/tiboyse.rc Normal file

Binary file not shown.

View file

@ -0,0 +1,41 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.27130.2036
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tiboyse_makeapp", "tiboyse_makeapp.vcxproj", "{0BF4CA31-F489-4345-B54F-5FE7B946D671}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rabbitsign", "rabbitsign.vcxproj", "{B3E1064D-D26A-431B-B324-74C98F946F6C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{0BF4CA31-F489-4345-B54F-5FE7B946D671}.Debug|x64.ActiveCfg = Debug|x64
{0BF4CA31-F489-4345-B54F-5FE7B946D671}.Debug|x64.Build.0 = Debug|x64
{0BF4CA31-F489-4345-B54F-5FE7B946D671}.Debug|x86.ActiveCfg = Debug|Win32
{0BF4CA31-F489-4345-B54F-5FE7B946D671}.Debug|x86.Build.0 = Debug|Win32
{0BF4CA31-F489-4345-B54F-5FE7B946D671}.Release|x64.ActiveCfg = Release|x64
{0BF4CA31-F489-4345-B54F-5FE7B946D671}.Release|x64.Build.0 = Release|x64
{0BF4CA31-F489-4345-B54F-5FE7B946D671}.Release|x86.ActiveCfg = Release|Win32
{0BF4CA31-F489-4345-B54F-5FE7B946D671}.Release|x86.Build.0 = Release|Win32
{B3E1064D-D26A-431B-B324-74C98F946F6C}.Debug|x64.ActiveCfg = Debug|x64
{B3E1064D-D26A-431B-B324-74C98F946F6C}.Debug|x64.Build.0 = Debug|x64
{B3E1064D-D26A-431B-B324-74C98F946F6C}.Debug|x86.ActiveCfg = Debug|Win32
{B3E1064D-D26A-431B-B324-74C98F946F6C}.Debug|x86.Build.0 = Debug|Win32
{B3E1064D-D26A-431B-B324-74C98F946F6C}.Release|x64.ActiveCfg = Release|x64
{B3E1064D-D26A-431B-B324-74C98F946F6C}.Release|x64.Build.0 = Release|x64
{B3E1064D-D26A-431B-B324-74C98F946F6C}.Release|x86.ActiveCfg = Release|Win32
{B3E1064D-D26A-431B-B324-74C98F946F6C}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4281E31C-7CB4-4BAB-A3EF-13EA47330F62}
EndGlobalSection
EndGlobal

View file

@ -0,0 +1,178 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClCompile Include="makeapp.cpp" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="rabbitsign.vcxproj">
<Project>{b3e1064d-d26a-431b-b324-74c98f946f6c}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="tiboyse.rc" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="resource.h" />
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>15.0</VCProjectVersion>
<ProjectGuid>{0BF4CA31-F489-4345-B54F-5FE7B946D671}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>tiboysemakeapp</RootNamespace>
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;USE_WINDOWS_RESOURCE;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<AdditionalIncludeDirectories>$(SolutionDir)rabbitsign\src</AdditionalIncludeDirectories>
<TreatWarningAsError>true</TreatWarningAsError>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;USE_WINDOWS_RESOURCE;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<AdditionalIncludeDirectories>$(SolutionDir)rabbitsign\src</AdditionalIncludeDirectories>
<TreatWarningAsError>true</TreatWarningAsError>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>MinSpace</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;USE_WINDOWS_RESOURCE;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<AdditionalIncludeDirectories>$(SolutionDir)rabbitsign\src</AdditionalIncludeDirectories>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>false</GenerateDebugInformation>
<AdditionalOptions>/NOCOFFGRPINFO %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>ucrt.lib;%(AdditionalDependencies)</AdditionalDependencies>
<IgnoreSpecificDefaultLibraries>libucrt.lib</IgnoreSpecificDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>MinSpace</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;USE_WINDOWS_RESOURCE;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<AdditionalIncludeDirectories>$(SolutionDir)rabbitsign\src</AdditionalIncludeDirectories>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>false</GenerateDebugInformation>
<AdditionalOptions>/NOCOFFGRPINFO %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>ucrt.lib;%(AdditionalDependencies)</AdditionalDependencies>
<IgnoreSpecificDefaultLibraries>libucrt.lib</IgnoreSpecificDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>