crt shader moved to the COnfig
This commit is contained in:
1 parent
81153f627c
commit
bb8ca0e0ab
10 files changed
+130
-198
No files matched your search
@@ -251,7 +251,7 @@ bin/menu.o: src/menu.c $(TIC80_H) $(TIC_H)
|
|||||||
bin/surf.o: src/surf.c $(TIC80_H) $(TIC_H)
|
bin/surf.o: src/surf.c $(TIC80_H) $(TIC_H)
|
||||||
$(CC) $< $(OPT) $(INCLUDES) -c -o $@
|
$(CC) $< $(OPT) $(INCLUDES) -c -o $@
|
||||||
|
|
||||||
bin/system.o: src/system.c src/keycodes.c src/ext/shader/* $(TIC80_H) $(TIC_H)
|
bin/system.o: src/system.c src/keycodes.c $(TIC80_H) $(TIC_H)
|
||||||
$(CC) $< $(OPT) $(INCLUDES) -c -o $@
|
$(CC) $< $(OPT) $(INCLUDES) -c -o $@
|
||||||
|
|
||||||
bin/chip.o: src/system/chip.c src/keycodes.c $(TIC80_H) $(TIC_H)
|
bin/chip.o: src/system/chip.c src/keycodes.c $(TIC80_H) $(TIC_H)
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
0x78, 0xda, 0xed, 0x59, 0x5d, 0x68, 0x5b, 0xc9, 0x15, 0x1e, 0xe7, 0x67, 0xbb, 0x52, 0xdc, 0x8c, 0x05, 0x65, 0xe9, 0xcf, 0xb6, 0x11, 0xea, 0x3e, 0x38, 0x60, 0x13, 0xc5, 0x72, 0xd3, 0x62, 0x50, 0xa9, 0x22, 0xdd, 0x58, 0xea, 0xda, 0x92, 0xd1, 0xcf, 0xba, 0x21, 0xb0, 0xae, 0xea, 0xe8, 0x26, 0x06, 0xdb, 0xda, 0x5a, 0x4e, 0x43, 0xb7, 0xb8, 0x2c, 0x81, 0x05, 0xf5, 0xc9, 0x7d, 0x48, 0xa1, 0x7a, 0xd2, 0x96, 0xbc, 0xb9, 0x2f, 0x7d, 0xf1, 0x4b, 0xf5, 0x60, 0xba, 0x8f, 0x0b, 0x2d, 0x65, 0x29, 0x7d, 0x28, 0xcb, 0xbe, 0x94, 0xbe, 0x5e, 0xcf, 0x53, 0x68, 0x58, 0xc8, 0xf4, 0xcc, 0xdc, 0xb9, 0xd2, 0xdc, 0xb9, 0x67, 0x64, 0x17, 0xb6, 0x2d, 0x14, 0xcd, 0xcd, 0xf1, 0x99, 0x99, 0x73, 0xcf, 0x99, 0x9f, 0xef, 0x9c, 0x99, 0x7b, 0x94, 0xa9, 0x0f, 0x5e, 0x21, 0x2f, 0x39, 0x94, 0x54, 0x2a, 0x75, 0xd8, 0xed, 0x76, 0x0f, 0x05, 0x87, 0xe6, 0x21, 0x67, 0x43, 0xe2, 0xfc, 0xd4, 0x4b, 0xa5, 0xb8, 0xd7, 0xed, 0x32, 0x2f, 0xf5, 0x84, 0x79, 0xfc, 0x90, 0x71, 0x76, 0xc8, 0x58, 0x40, 0x52, 0x3f, 0x91, 0x48, 0xb4, 0x5d, 0xd7, 0x6d, 0x0b, 0x0e, 0xcd, 0x36, 0xe8, 0x05, 0x24, 0xf4, 0x13, 0x09, 0xee, 0xb9, 0x2e, 0xf3, 0x12, 0x4d, 0xd0, 0x6f, 0x33, 0x8f, 0xf9, 0x74, 0xca, 0xda, 0x84, 0x4b, 0xfd, 0x42, 0xa1, 0xd0, 0xef, 0xf5, 0x7a, 0x7d, 0xc1, 0xa1, 0xd9, 0xa7, 0x40, 0xa0, 0xdb, 0x57, 0xfa, 0x85, 0x02, 0xf7, 0x7a, 0x3d, 0xe6, 0x15, 0x9e, 0x82, 0x7e, 0x9f, 0x79, 0x14, 0x88, 0xf5, 0x41, 0xbf, 0xaf, 0xf4, 0x1b, 0x8d, 0xc6, 0xc9, 0x60, 0x30, 0x38, 0x11, 0x1c, 0x9a, 0x92, 0x28, 0xa1, 0x82, 0x0b, 0xfd, 0x46, 0x83, 0x7b, 0x83, 0x01, 0xf3, 0x1a, 0xc7, 0xa0, 0x7f, 0x02, 0x36, 0x4f, 0x18, 0x23, 0x40, 0x82, 0x7f, 0x70, 0x74, 0x14, 0x3f, 0x12, 0x65, 0xe9, 0xd9, 0xd1, 0x51, 0x26, 0x73, 0xb4, 0x94, 0xc9, 0x3c, 0x13, 0x4d, 0xf8, 0xb3, 0x94, 0xce, 0x64, 0x2e, 0x06, 0x72, 0xd9, 0x0f, 0x72, 0xf9, 0x5e, 0x44, 0xfe, 0x4c, 0xe9, 0x2b, 0x0e, 0xed, 0x90, 0x7c, 0x49, 0xd9, 0x5f, 0x52, 0xfa, 0x4b, 0x23, 0xfd, 0xdf, 0x0d, 0x06, 0x57, 0x06, 0xf7, 0x8e, 0x07, 0x83, 0xe3, 0x7b, 0x3e, 0x35, 0x1a, 0x92, 0x43, 0xcf, 0xbd, 0xb5, 0x46, 0xe3, 0xf2, 0x0f, 0x5d, 0xf7, 0x15, 0x37, 0xd1, 0x74, 0xdd, 0xe6, 0x6b, 0xae, 0xce, 0xa1, 0xf6, 0xda, 0x4c, 0x22, 0x31, 0xf5, 0x5e, 0xb7, 0xfb, 0x6a, 0xf7, 0xc9, 0x6c, 0x57, 0xd2, 0xec, 0x93, 0x6e, 0x50, 0x87, 0xda, 0x6c, 0x32, 0x95, 0xba, 0xf0, 0xcb, 0x5e, 0x2f, 0xd6, 0x7b, 0x5a, 0xea, 0x49, 0x2a, 0x15, 0x60, 0x97, 0x05, 0x7f, 0xda, 0x7b, 0x0a, 0x7f, 0xbf, 0x57, 0x28, 0x5c, 0x92, 0x78, 0x0b, 0xec, 0xe5, 0xf3, 0x4f, 0x59, 0xbf, 0x01, 0x7e, 0xc0, 0x09, 0x13, 0x7b, 0xfb, 0x92, 0x1f, 0x12, 0x0e, 0xd8, 0x9f, 0x1e, 0x02, 0xfe, 0x5d, 0x45, 0xc2, 0x1f, 0x08, 0x3b, 0xf5, 0x38, 0xf7, 0x3c, 0x89, 0xb7, 0xc0, 0xde, 0x7d, 0x0e, 0x5c, 0x3c, 0xae, 0x7b, 0x0d, 0xfc, 0x60, 0xa8, 0xdf, 0x66, 0x0c, 0xb0, 0x97, 0xd4, 0x76, 0x19, 0x97, 0x7e, 0x90, 0x18, 0xe9, 0x4b, 0xbc, 0x05, 0xf6, 0x2f, 0x5e, 0xbc, 0xe8, 0xf7, 0xfa, 0x7d, 0x51, 0xaf, 0x80, 0x1f, 0x0c, 0xf5, 0xfb, 0x8c, 0x01, 0xf6, 0xec, 0x05, 0x50, 0xbf, 0xc7, 0xb8, 0xf4, 0x83, 0xc2, 0x48, 0x5f, 0x62, 0x2d, 0xb0, 0x1f, 0x08, 0xfe, 0x99, 0xac, 0x6f, 0x80, 0x1f, 0x0c, 0xf5, 0x4f, 0x08, 0x07, 0xec, 0x4f, 0x4f, 0x00, 0xff, 0x81, 0x22, 0xe1, 0x0f, 0x81, 0x3e, 0x81, 0x62, 0xf3, 0x01, 0xd1, 0xaf, 0xcb, 0x4d, 0x1f, 0x08, 0xcb, 0xa3, 0x3e, 0x10, 0x92, 0x23, 0x3e, 0x10, 0xc8, 0x6d, 0x3e, 0x20, 0xfa, 0x85, 0xdc, 0xe6, 0x03, 0xa2, 0x5f, 0xc8, 0x6d, 0x3e, 0x20, 0xfa, 0x85, 0xdc, 0xe6, 0x03, 0xa2, 0x1f, 0x8d, 0x5f, 0x59, 0xdc, 0x76, 0x9b, 0x3f, 0x37, 0xe3, 0x97, 0x0b, 0x3c, 0xdb, 0x02, 0x53, 0xa0, 0xe7, 0x40, 0x84, 0xcc, 0x24, 0xe0, 0x5f, 0x82, 0x80, 0xee, 0x8c, 0xa2, 0x50, 0x81, 0xf1, 0xc5, 0x1f, 0x70, 0x55, 0xf1, 0x4a, 0x40, 0x53, 0x01, 0xbd, 0xdd, 0xf0, 0xbc, 0xe3, 0xcf, 0xfe, 0xe1, 0x1d, 0x0f, 0x7c, 0x12, 0x6d, 0xbd, 0x90, 0x49, 0xf9, 0x8f, 0x96, 0x51, 0xfc, 0x0a, 0xfe, 0x9c, 0x47, 0xe3, 0x97, 0x88, 0x98, 0x3d, 0x85, 0xd8, 0x95, 0x3e, 0x60, 0xc6, 0x6f, 0x00, 0x73, 0x80, 0xbd, 0x04, 0x58, 0xf8, 0x83, 0xf0, 0x0b, 0x89, 0xfd, 0x10, 0x6b, 0x85, 0xfd, 0x94, 0xef, 0x0f, 0x6a, 0xfc, 0xef, 0x66, 0x3c, 0xaf, 0xf3, 0xf8, 0xef, 0x43, 0x12, 0x6d, 0xbd, 0x5c, 0xf8, 0xe8, 0xda, 0x04, 0xa4, 0x49, 0x99, 0x94, 0x49, 0xb1, 0x17, 0xae, 0x11, 0xd1, 0xb8, 0x2a, 0xe2, 0x96, 0x12, 0x64, 0x2b, 0x42, 0xc6, 0x39, 0x0d, 0xf1, 0x90, 0x1c, 0xfa, 0x28, 0x15, 0x1c, 0x1a, 0x50, 0xe1, 0x86, 0x7d, 0x90, 0x82, 0x50, 0x56, 0x14, 0xa3, 0x61, 0x7d, 0x5f, 0x8d, 0x30, 0xf8, 0x43, 0x99, 0xcf, 0x0d, 0x03, 0x84, 0x8d, 0x5b, 0x9f, 0x92, 0x07, 0x64, 0x98, 0x1f, 0xf5, 0x51, 0x8b, 0x2d, 0x2a, 0xc6, 0xa7, 0x72, 0xfe, 0x82, 0x9b, 0xfa, 0xc3, 0x31, 0x38, 0xc1, 0x65, 0xfa, 0x58, 0xd4, 0x3e, 0x5f, 0xc6, 0xcf, 0x86, 0x8a, 0x51, 0x65, 0x03, 0x5b, 0xe0, 0x88, 0x45, 0xec, 0x72, 0xe8, 0x0d, 0x28, 0x32, 0x0e, 0x57, 0x63, 0xf3, 0xa0, 0x1e, 0xb6, 0x20, 0xf1, 0x62, 0x54, 0xd9, 0xf1, 0x31, 0x0e, 0xcb, 0xd5, 0xa4, 0xc4, 0xfe, 0x30, 0xbb, 0x7d, 0xce, 0x82, 0x77, 0x49, 0x44, 0x9f, 0x6b, 0xe3, 0x98, 0xfe, 0x31, 0x1a, 0x97, 0xa0, 0xf3, 0xd7, 0xc7, 0x57, 0x0c, 0x5d, 0x3f, 0xb3, 0xe8, 0x8f, 0xfa, 0x7d, 0x70, 0x22, 0x72, 0x6d, 0xcf, 0xb1, 0xfd, 0x37, 0xe5, 0x11, 0x7c, 0x35, 0x6c, 0x24, 0x38, 0xcc, 0Line truncated
|
0x78, 0xda, 0xed, 0x19, 0x4b, 0x6c, 0x1b, 0xc7, 0x75, 0xfd, 0x49, 0x1a, 0x6e, 0x5c, 0x8f, 0x05, 0x14, 0x41, 0x3f, 0x69, 0xb3, 0x50, 0x52, 0x94, 0x94, 0x48, 0x8a, 0x22, 0x25, 0xd5, 0xb5, 0xba, 0x4d, 0x65, 0x91, 0x96, 0xd4, 0xe8, 0x63, 0xe8, 0x13, 0x37, 0x30, 0x12, 0x75, 0x45, 0x2e, 0x25, 0x22, 0x14, 0x57, 0xdd, 0x25, 0x2d, 0xc9, 0x81, 0x80, 0x20, 0x40, 0x00, 0xf5, 0xe4, 0x1c, 0x5c, 0xa0, 0x3a, 0x29, 0x41, 0x6e, 0xea, 0xa5, 0x17, 0x5f, 0xaa, 0x83, 0xd1, 0x1e, 0x03, 0xb4, 0x28, 0x82, 0xa2, 0x87, 0xa2, 0xe8, 0xa5, 0xe8, 0x95, 0x9e, 0x93, 0x51, 0x23, 0x40, 0xb6, 0xef, 0xcd, 0xcc, 0x2e, 0xf7, 0x33, 0x2b, 0x3b, 0x80, 0x93, 0x02, 0x85, 0x66, 0x3d, 0x9c, 0xcf, 0x9b, 0xf7, 0xe6, 0xfd, 0x67, 0x46, 0x3e, 0xf3, 0xe1, 0xb3, 0xca, 0xe7, 0x2e, 0x94, 0xfe, 0xfe, 0xfe, 0x3b, 0xfb, 0xfb, 0xfb, 0x77, 0xb0, 0x85, 0xe1, 0x1d, 0x97, 0xfa, 0xd5, 0x75, 0x1f, 0x74, 0xfb, 0xfb, 0xdd, 0xee, 0xfe, 0x3e, 0xed, 0xf6, 0xbf, 0x47, 0xbb, 0xee, 0x1d, 0xea, 0xd2, 0x3b, 0x94, 0x7a, 0x95, 0xe1, 0xf7, 0xf5, 0xf5, 0x59, 0xf5, 0x7a, 0xdd, 0xc2, 0x16, 0x86, 0x16, 0xe0, 0x79, 0x15, 0xf1, 0xfb, 0xfa, 0xdc, 0x6e, 0xbd, 0x4e, 0xbb, 0x7d, 0x06, 0xe0, 0x5b, 0xb4, 0x4b, 0x79, 0x7d, 0x40, 0x2d, 0xc5, 0x65, 0xf8, 0xe5, 0x72, 0xf9, 0xf0, 0xe0, 0xe0, 0xe0, 0x10, 0x5b, 0x18, 0x1e, 0x12, 0xa8, 0x80, 0x7b, 0x28, 0xf0, 0xcb, 0x65, 0xb7, 0x7b, 0x70, 0x40, 0xbb, 0xe5, 0xbb, 0x80, 0x7f, 0x48, 0xbb, 0x04, 0x2a, 0x3d, 0x04, 0xfc, 0x43, 0x81, 0xbf, 0xb2, 0xb2, 0x72, 0xff, 0xf8, 0xf8, 0xf8, 0x3e, 0xb6, 0x30, 0x64, 0x95, 0x28, 0x04, 0x5b, 0xc4, 0x5f, 0x59, 0x71, 0xbb, 0xc7, 0xc7, 0xb4, 0xbb, 0x72, 0x0f, 0xf0, 0xef, 0x03, 0xcd, 0xfb, 0x94, 0x2a, 0x50, 0xb1, 0xfd, 0xf0, 0xe8, 0x48, 0x3d, 0xc2, 0x72, 0xe5, 0xe3, 0xa3, 0xa3, 0x52, 0xe9, 0xe8, 0x4a, 0xa9, 0xf4, 0x31, 0x0e, 0xe1, 0xe7, 0x4a, 0xa1, 0x54, 0x3a, 0xe7, 0xc1, 0xd9, 0x3c, 0xc0, 0xd9, 0xba, 0x18, 0xfc, 0x63, 0x81, 0x2f, 0x5a, 0x18, 0x87, 0xe0, 0x57, 0x04, 0xfd, 0x2b, 0x02, 0xff, 0x4a, 0x0f, 0xff, 0x77, 0xc7, 0xc7, 0xcf, 0x1f, 0xdf, 0xbc, 0x77, 0x7c, 0x7c, 0xef, 0x26, 0xaf, 0x2b, 0x2b, 0xac, 0x85, 0x99, 0x9b, 0xd7, 0x57, 0x56, 0x9e, 0xf9, 0x45, 0xbd, 0xfe, 0x6c, 0xbd, 0xcf, 0xa8, 0xd7, 0x8d, 0x17, 0xea, 0xc1, 0x16, 0x7a, 0x2f, 0x5c, 0xea, 0xeb, 0x3b, 0xf3, 0xee, 0xfe, 0xfe, 0x73, 0xfb, 0xef, 0xa5, 0xf7, 0x59, 0x4d, 0xbf, 0xb7, 0xef, 0xf5, 0xa1, 0x97, 0xd6, 0xfa, 0xfb, 0xcf, 0x7e, 0x70, 0x70, 0x90, 0x3a, 0xb8, 0x3b, 0x73, 0xc0, 0xea, 0x4c, 0x19, 0xb4, 0x8c, 0xed, 0xdd, 0x83, 0xbb, 0xf0, 0xfb, 0xd3, 0x72, 0xf9, 0x3c, 0xb3, 0x37, 0xda, 0x9e, 0x7d, 0xff, 0x61, 0xfd, 0x21, 0xf0, 0x03, 0x57, 0xa1, 0xa8, 0xdb, 0xcf, 0xdd, 0x3b, 0x8a, 0x0b, 0xb6, 0x7f, 0x70, 0x07, 0xec, 0xbf, 0x2f, 0x2a, 0xfa, 0x83, 0x42, 0x1f, 0x74, 0x5d, 0xb7, 0xdb, 0x65, 0xf6, 0x46, 0xdb, 0xd7, 0x1f, 0x42, 0x8b, 0x5f, 0xbd, 0xfe, 0x12, 0xf8, 0x81, 0x8f, 0x6f, 0x51, 0x0a, 0xb6, 0x67, 0xd5, 0xaa, 0x53, 0x97, 0xf9, 0x41, 0x5f, 0x0f, 0x9f, 0xd9, 0x1b, 0x6d, 0xff, 0xe8, 0xd1, 0xa3, 0xc3, 0x83, 0xc3, 0x43, 0xec, 0x2f, 0x80, 0x1f, 0xf8, 0xf8, 0x87, 0x94, 0x82, 0xed, 0xe9, 0x23, 0xa8, 0x87, 0x07, 0xd4, 0x65, 0x7e, 0x50, 0xee, 0xe1, 0x33, 0x5b, 0xa3, 0xed, 0x8f, 0xb1, 0xfd, 0x8c, 0xf5, 0x57, 0xc1, 0x0f, 0x7c, 0xfc, 0xfb, 0x8a, 0x0b, 0xb6, 0x7f, 0x70, 0x1f, 0xec, 0x7f, 0x2c, 0x2a, 0xfa, 0x83, 0x87, 0xaf, 0x40, 0x49, 0xf2, 0x01, 0x9c, 0x0f, 0xc2, 0xa3, 0x3e, 0x10, 0x86, 0xc7, 0x7d, 0x20, 0x04, 0x97, 0xf8, 0x80, 0x07, 0x4f, 0xf2, 0x01, 0x9c, 0x47, 0x78, 0x92, 0x0f, 0xe0, 0x3c, 0xc2, 0x93, 0x7c, 0x00, 0xe7, 0x11, 0x9e, 0xe4, 0x03, 0x38, 0x2f, 0x8d, 0x5f, 0x56, 0xea, 0x96, 0xe5, 0x3e, 0x8c, 0xc6, 0xaf, 0x8b, 0xf6, 0xb4, 0xd0, 0xa6, 0x50, 0x1f, 0x42, 0x55, 0x94, 0x4b, 0x7d, 0xf0, 0xaf, 0x4f, 0x01, 0xdc, 0x4b, 0xa2, 0x86, 0x0a, 0xec, 0x8f, 0x3f, 0xe0, 0xaa, 0xb8, 0xc4, 0xab, 0x67, 0xbc, 0xfa, 0xd6, 0x4a, 0xb7, 0x7b, 0xef, 0xb3, 0x7f, 0x77, 0xef, 0x1d, 0xf3, 0x8a, 0xe3, 0x60, 0x51, 0x4e, 0xcb, 0x97, 0x5a, 0x7a, 0xf1, 0x8b, 0xed, 0x43, 0x37, 0x1e, 0xbf, 0x0a, 0xc6, 0xec, 0x03, 0x88, 0x5d, 0xe6, 0x03, 0xd1, 0xf8, 0xf5, 0xcc, 0xec, 0xd9, 0x9e, 0x19, 0x18, 0xfd, 0x01, 0xfd, 0x82, 0xd9, 0xde, 0xb7, 0xb5, 0xb0, 0xfd, 0x19, 0xee, 0x0f, 0x62, 0xff, 0x9f, 0x94, 0xba, 0x5d, 0x67, 0xfb, 0x5f, 0x7e, 0xc5, 0x71, 0xb0, 0x9c, 0xfd, 0xe4, 0xa5, 0x53, 0x23, 0x9d, 0x96, 0xd3, 0x72, 0x5a, 0x92, 0x8b, 0x1b, 0xa8, 0x4a, 0xa0, 0x15, 0x05, 0x4f, 0x29, 0xac, 0x49, 0x05, 0x61, 0xae, 0x4b, 0x42, 0x6d, 0x08, 0x0e, 0x73, 0x84, 0x60, 0x0b, 0x03, 0xe8, 0xb8, 0x11, 0xfa, 0x00, 0x05, 0x20, 0xeb, 0x88, 0x86, 0x84, 0xf1, 0x39, 0x9a, 0x42, 0xe1, 0x87, 0x50, 0xde, 0x46, 0x08, 0x28, 0xf4, 0x24, 0xf9, 0x04, 0xdc, 0xab, 0x11, 0xf2, 0xbd, 0x39, 0x92, 0x40, 0x8b, 0xe0, 0xfe, 0x84, 0xf1, 0x8f, 0x6d, 0x14, 0xdf, 0xdf, 0xc3, 0x55, 0xe4, 0xb0, 0xe0, 0x5e, 0x24, 0x99, 0x5f, 0xea, 0x3e, 0xde, 0x54, 0x94, 0x08, 0x1a, 0x32, 0x01, 0x7b, 0x4d, 0x8c, 0xae, 0x0b, 0xb3, 0x5e, 0x8d, 0xed, 0xe3, 0x8a, 0xbd, 0x5d, 0xaf, 0x1f, 0xa6, 0xc0, 0xec, 0x45, 0x89, 0xa0, 0xc3, 0x6d, 0x1c, 0x86, 0x0b, 0xa6, 0x50, 0x3f, 0x34, 0x99, 0xbe, 0x4b, 0xbd, 0xb5, 0x4a, 0x0c, 0xdf, 0x0d, 0xec, 0x13, 0xf5, 0x8f, 0xde, 0xbe, 0x8a, 0x94, 0xff, 0xe0, 0Line truncated
|
||||||
BIN
Binary file not shown.
@@ -76,6 +76,31 @@ static void readConfigShowSync(Config* config, lua_State* lua)
|
|||||||
lua_pop(lua, 1);
|
lua_pop(lua, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void readConfigCrtMonitor(Config* config, lua_State* lua)
|
||||||
|
{
|
||||||
|
lua_getglobal(lua, "CRT_MONITOR");
|
||||||
|
|
||||||
|
if(lua_isboolean(lua, -1))
|
||||||
|
config->data.crtMonitor = lua_toboolean(lua, -1);
|
||||||
|
|
||||||
|
lua_pop(lua, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void readConfigCrtShader(Config* config, lua_State* lua)
|
||||||
|
{
|
||||||
|
lua_getglobal(lua, "CRT_SHADER");
|
||||||
|
|
||||||
|
if(lua_isstring(lua, -1))
|
||||||
|
{
|
||||||
|
if(!config->data.crtShader)
|
||||||
|
config->data.crtShader = calloc(1, sizeof(tic_code));
|
||||||
|
|
||||||
|
strcpy((char*)config->data.crtShader, lua_tostring(lua, -1));
|
||||||
|
}
|
||||||
|
|
||||||
|
lua_pop(lua, 1);
|
||||||
|
}
|
||||||
|
|
||||||
static void readCursorTheme(Config* config, lua_State* lua)
|
static void readCursorTheme(Config* config, lua_State* lua)
|
||||||
{
|
{
|
||||||
lua_getfield(lua, -1, "CURSOR");
|
lua_getfield(lua, -1, "CURSOR");
|
||||||
@@ -222,9 +247,15 @@ static void readConfig(Config* config)
|
|||||||
readConfigCheckNewVersion(config, lua);
|
readConfigCheckNewVersion(config, lua);
|
||||||
readConfigNoSound(config, lua);
|
readConfigNoSound(config, lua);
|
||||||
readConfigShowSync(config, lua);
|
readConfigShowSync(config, lua);
|
||||||
|
readConfigCrtMonitor(config, lua);
|
||||||
readTheme(config, lua);
|
readTheme(config, lua);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(luaL_loadstring(lua, config->tic->config.bank1.code.data) == LUA_OK && lua_pcall(lua, 0, LUA_MULTRET, 0) == LUA_OK)
|
||||||
|
{
|
||||||
|
readConfigCrtShader(config, lua);
|
||||||
|
}
|
||||||
|
|
||||||
lua_close(lua);
|
lua_close(lua);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -277,9 +277,9 @@ static bool AddLoop(GifFileType *gif)
|
|||||||
|
|
||||||
static const u8* toColor(const u8* ptr, gif_color* color)
|
static const u8* toColor(const u8* ptr, gif_color* color)
|
||||||
{
|
{
|
||||||
color->b = *ptr++;
|
|
||||||
color->g = *ptr++;
|
|
||||||
color->r = *ptr++;
|
color->r = *ptr++;
|
||||||
|
color->g = *ptr++;
|
||||||
|
color->b = *ptr++;
|
||||||
ptr++;
|
ptr++;
|
||||||
|
|
||||||
return ptr;
|
return ptr;
|
||||||
|
|||||||
@@ -1,133 +0,0 @@
|
|||||||
SHADER(#version 100\n
|
|
||||||
|
|
||||||
precision highp float;
|
|
||||||
|
|
||||||
varying vec2 texCoord;
|
|
||||||
uniform sampler2D source;
|
|
||||||
uniform float trg_x;
|
|
||||||
uniform float trg_y;
|
|
||||||
uniform float trg_w;
|
|
||||||
uniform float trg_h;
|
|
||||||
uniform float scr_w;
|
|
||||||
uniform float scr_h;
|
|
||||||
|
|
||||||
// Emulated input resolution.
|
|
||||||
vec2 res=vec2(256.0,144.0);
|
|
||||||
|
|
||||||
// Hardness of scanline.
|
|
||||||
// -8.0 = soft
|
|
||||||
// -16.0 = medium
|
|
||||||
float hardScan=-8.0;
|
|
||||||
|
|
||||||
// Hardness of pixels in scanline.
|
|
||||||
// -2.0 = soft
|
|
||||||
// -4.0 = hard
|
|
||||||
float hardPix=-3.0;
|
|
||||||
|
|
||||||
// Display warp.
|
|
||||||
// 0.0 = none
|
|
||||||
// 1.0/8.0 = extreme
|
|
||||||
vec2 warp=vec2(1.0/32.0,1.0/24.0);
|
|
||||||
|
|
||||||
// Amount of shadow mask.
|
|
||||||
float maskDark=0.5;
|
|
||||||
float maskLight=1.5;
|
|
||||||
|
|
||||||
//------------------------------------------------------------------------
|
|
||||||
|
|
||||||
// sRGB to Linear.
|
|
||||||
// Assuing using sRGB typed textures this should not be needed.
|
|
||||||
float ToLinear1(float c){return(c<=0.04045)?c/12.92:pow((c+0.055)/1.055,2.4);}
|
|
||||||
vec3 ToLinear(vec3 c){return vec3(ToLinear1(c.r),ToLinear1(c.g),ToLinear1(c.b));}
|
|
||||||
|
|
||||||
// Linear to sRGB.
|
|
||||||
// Assuing using sRGB typed textures this should not be needed.
|
|
||||||
float ToSrgb1(float c){return(c<0.0031308?c*12.92:1.055*pow(c,0.41666)-0.055);}
|
|
||||||
vec3 ToSrgb(vec3 c){return vec3(ToSrgb1(c.r),ToSrgb1(c.g),ToSrgb1(c.b));}
|
|
||||||
|
|
||||||
// Nearest emulated sample given floating point position and texel offset.
|
|
||||||
// Also zero's off screen.
|
|
||||||
vec3 Fetch(vec2 pos,vec2 off){
|
|
||||||
pos=(floor(pos*res+off)+vec2(0.5,0.5))/res;
|
|
||||||
return ToLinear(1.2 * texture2D(source,pos.xy,-16.0).rgb);}
|
|
||||||
|
|
||||||
// Distance in emulated pixels to nearest texel.
|
|
||||||
vec2 Dist(vec2 pos){pos=pos*res;return -((pos-floor(pos))-vec2(0.5));}
|
|
||||||
|
|
||||||
// 1D Gaussian.
|
|
||||||
float Gaus(float pos,float scale){return exp2(scale*pos*pos);}
|
|
||||||
|
|
||||||
// 3-tap Gaussian filter along horz line.
|
|
||||||
vec3 Horz3(vec2 pos,float off){
|
|
||||||
vec3 b=Fetch(pos,vec2(-1.0,off));
|
|
||||||
vec3 c=Fetch(pos,vec2( 0.0,off));
|
|
||||||
vec3 d=Fetch(pos,vec2( 1.0,off));
|
|
||||||
float dst=Dist(pos).x;
|
|
||||||
// Convert distance to weight.
|
|
||||||
float scale=hardPix;
|
|
||||||
float wb=Gaus(dst-1.0,scale);
|
|
||||||
float wc=Gaus(dst+0.0,scale);
|
|
||||||
float wd=Gaus(dst+1.0,scale);
|
|
||||||
// Return filtered sample.
|
|
||||||
return (b*wb+c*wc+d*wd)/(wb+wc+wd);}
|
|
||||||
|
|
||||||
// 5-tap Gaussian filter along horz line.
|
|
||||||
vec3 Horz5(vec2 pos,float off){
|
|
||||||
vec3 a=Fetch(pos,vec2(-2.0,off));
|
|
||||||
vec3 b=Fetch(pos,vec2(-1.0,off));
|
|
||||||
vec3 c=Fetch(pos,vec2( 0.0,off));
|
|
||||||
vec3 d=Fetch(pos,vec2( 1.0,off));
|
|
||||||
vec3 e=Fetch(pos,vec2( 2.0,off));
|
|
||||||
float dst=Dist(pos).x;
|
|
||||||
// Convert distance to weight.
|
|
||||||
float scale=hardPix;
|
|
||||||
float wa=Gaus(dst-2.0,scale);
|
|
||||||
float wb=Gaus(dst-1.0,scale);
|
|
||||||
float wc=Gaus(dst+0.0,scale);
|
|
||||||
float wd=Gaus(dst+1.0,scale);
|
|
||||||
float we=Gaus(dst+2.0,scale);
|
|
||||||
// Return filtered sample.
|
|
||||||
return (a*wa+b*wb+c*wc+d*wd+e*we)/(wa+wb+wc+wd+we);}
|
|
||||||
|
|
||||||
// Return scanline weight.
|
|
||||||
float Scan(vec2 pos,float off){
|
|
||||||
float dst=Dist(pos).y;
|
|
||||||
return Gaus(dst+off,hardScan);}
|
|
||||||
|
|
||||||
// Allow nearest three lines to effect pixel.
|
|
||||||
vec3 Tri(vec2 pos){
|
|
||||||
vec3 a=Horz3(pos,-1.0);
|
|
||||||
vec3 b=Horz5(pos, 0.0);
|
|
||||||
vec3 c=Horz3(pos, 1.0);
|
|
||||||
float wa=Scan(pos,-1.0);
|
|
||||||
float wb=Scan(pos, 0.0);
|
|
||||||
float wc=Scan(pos, 1.0);
|
|
||||||
return a*wa+b*wb+c*wc;}
|
|
||||||
|
|
||||||
// Distortion of scanlines, and end of screen alpha.
|
|
||||||
vec2 Warp(vec2 pos){
|
|
||||||
pos=pos*2.0-1.0;
|
|
||||||
pos*=vec2(1.0+(pos.y*pos.y)*warp.x,1.0+(pos.x*pos.x)*warp.y);
|
|
||||||
return pos*0.5+0.5;}
|
|
||||||
|
|
||||||
// Shadow mask.
|
|
||||||
vec3 Mask(vec2 pos){
|
|
||||||
pos.x+=pos.y*3.0;
|
|
||||||
vec3 mask=vec3(maskDark,maskDark,maskDark);
|
|
||||||
pos.x=fract(pos.x/6.0);
|
|
||||||
if(pos.x<0.333)mask.r=maskLight;
|
|
||||||
else if(pos.x<0.666)mask.g=maskLight;
|
|
||||||
else mask.b=maskLight;
|
|
||||||
return mask;}
|
|
||||||
|
|
||||||
void main() {
|
|
||||||
hardScan=-12.0;
|
|
||||||
// maskDark=maskLight;
|
|
||||||
vec2 start=gl_FragCoord.xy-vec2(trg_x, trg_y);
|
|
||||||
start.y=scr_h-start.y;
|
|
||||||
|
|
||||||
vec2 pos=Warp(start/vec2(trg_w, trg_h));
|
|
||||||
|
|
||||||
gl_FragColor.rgb=Tri(pos)*Mask(gl_FragCoord.xy);
|
|
||||||
gl_FragColor = vec4(ToSrgb(gl_FragColor.rgb), 1.0);
|
|
||||||
})
|
|
||||||
+4
-1
@@ -1637,8 +1637,9 @@ void studioConfigChanged()
|
|||||||
if(code->update)
|
if(code->update)
|
||||||
code->update(code);
|
code->update(code);
|
||||||
|
|
||||||
// initTouchGamepad();
|
|
||||||
updateSystemFont();
|
updateSystemFont();
|
||||||
|
|
||||||
|
getSystem()->updateConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 unzip(u8** dest, const u8* source, size_t size)
|
u32 unzip(u8** dest, const u8* source, size_t size)
|
||||||
@@ -1764,6 +1765,8 @@ static void studioTick()
|
|||||||
|
|
||||||
static void studioClose()
|
static void studioClose()
|
||||||
{
|
{
|
||||||
|
free((void*)getConfig()->crtShader);
|
||||||
|
|
||||||
{
|
{
|
||||||
for(s32 i = 0; i < TIC_EDITOR_BANKS; i++)
|
for(s32 i = 0; i < TIC_EDITOR_BANKS; i++)
|
||||||
{
|
{
|
||||||
|
|||||||
+75
-60
@@ -12,7 +12,7 @@
|
|||||||
#include <emscripten.h>
|
#include <emscripten.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define STUDIO_UI_SCALE 4
|
#define STUDIO_UI_SCALE 3
|
||||||
#define STUDIO_PIXEL_FORMAT GPU_FORMAT_RGBA
|
#define STUDIO_PIXEL_FORMAT GPU_FORMAT_RGBA
|
||||||
#define TEXTURE_SIZE (TIC80_FULLWIDTH)
|
#define TEXTURE_SIZE (TIC80_FULLWIDTH)
|
||||||
#define OFFSET_LEFT ((TIC80_FULLWIDTH-TIC80_WIDTH)/2)
|
#define OFFSET_LEFT ((TIC80_FULLWIDTH-TIC80_WIDTH)/2)
|
||||||
@@ -30,7 +30,6 @@ static struct
|
|||||||
GPU_Image* texture;
|
GPU_Image* texture;
|
||||||
u32 shader;
|
u32 shader;
|
||||||
GPU_ShaderBlock block;
|
GPU_ShaderBlock block;
|
||||||
bool useShader;
|
|
||||||
} gpu;
|
} gpu;
|
||||||
|
|
||||||
struct
|
struct
|
||||||
@@ -212,7 +211,7 @@ static void calcTextureRect(SDL_Rect* rect)
|
|||||||
{
|
{
|
||||||
SDL_GetWindowSize(platform.window, &rect->w, &rect->h);
|
SDL_GetWindowSize(platform.window, &rect->w, &rect->h);
|
||||||
|
|
||||||
if(platform.gpu.useShader)
|
if(platform.studio->config()->crtMonitor)
|
||||||
{
|
{
|
||||||
enum{Width = TIC80_FULLWIDTH, Height = TIC80_FULLHEIGHT};
|
enum{Width = TIC80_FULLWIDTH, Height = TIC80_FULLHEIGHT};
|
||||||
|
|
||||||
@@ -279,7 +278,7 @@ static void processMouse()
|
|||||||
SDL_Rect rect = {0, 0, 0, 0};
|
SDL_Rect rect = {0, 0, 0, 0};
|
||||||
calcTextureRect(&rect);
|
calcTextureRect(&rect);
|
||||||
|
|
||||||
if(platform.gpu.useShader)
|
if(platform.studio->config()->crtMonitor)
|
||||||
{
|
{
|
||||||
if(rect.w) input->mouse.x = (mx - rect.x) * TIC80_FULLWIDTH / rect.w - OFFSET_LEFT;
|
if(rect.w) input->mouse.x = (mx - rect.x) * TIC80_FULLWIDTH / rect.w - OFFSET_LEFT;
|
||||||
if(rect.h) input->mouse.y = (my - rect.y) * TIC80_FULLHEIGHT / rect.h - OFFSET_TOP;
|
if(rect.h) input->mouse.y = (my - rect.y) * TIC80_FULLHEIGHT / rect.h - OFFSET_TOP;
|
||||||
@@ -946,6 +945,73 @@ static void preseed()
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void loadCrtShader()
|
||||||
|
{
|
||||||
|
static const char* VertexShader = "#version 100\n\
|
||||||
|
precision highp float;\n\
|
||||||
|
precision mediump int;\n\
|
||||||
|
attribute vec2 gpu_Vertex;\n\
|
||||||
|
attribute vec2 gpu_TexCoord;\n\
|
||||||
|
attribute mediump vec4 gpu_Color;\n\
|
||||||
|
uniform mat4 gpu_ModelViewProjectionMatrix;\n\
|
||||||
|
varying mediump vec4 color;\n\
|
||||||
|
varying vec2 texCoord;\n\
|
||||||
|
void main(void)\n\
|
||||||
|
{\n\
|
||||||
|
color = gpu_Color;\n\
|
||||||
|
texCoord = vec2(gpu_TexCoord);\n\
|
||||||
|
gl_Position = gpu_ModelViewProjectionMatrix * vec4(gpu_Vertex, 0.0, 1.0);\n\
|
||||||
|
}";
|
||||||
|
|
||||||
|
u32 vertex = GPU_CompileShader(GPU_VERTEX_SHADER, VertexShader);
|
||||||
|
|
||||||
|
if(!vertex)
|
||||||
|
{
|
||||||
|
char msg[1024];
|
||||||
|
sprintf(msg, "Failed to load vertex shader: %s\n", GPU_GetShaderMessage());
|
||||||
|
showMessageBox("Error", msg);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 fragment = GPU_CompileShader(GPU_PIXEL_SHADER, platform.studio->config()->crtShader);
|
||||||
|
|
||||||
|
if(!fragment)
|
||||||
|
{
|
||||||
|
char msg[1024];
|
||||||
|
sprintf(msg, "Failed to load fragment shader: %s\n", GPU_GetShaderMessage());
|
||||||
|
showMessageBox("Error", msg);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(platform.gpu.shader)
|
||||||
|
GPU_FreeShaderProgram(platform.gpu.shader);
|
||||||
|
|
||||||
|
platform.gpu.shader = GPU_LinkShaders(vertex, fragment);
|
||||||
|
|
||||||
|
if(platform.gpu.shader)
|
||||||
|
{
|
||||||
|
platform.gpu.block = GPU_LoadShaderBlock(platform.gpu.shader, "gpu_Vertex", "gpu_TexCoord", "gpu_Color", "gpu_ModelViewProjectionMatrix");
|
||||||
|
GPU_ActivateShaderProgram(platform.gpu.shader, &platform.gpu.block);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
char msg[1024];
|
||||||
|
sprintf(msg, "Failed to link shader program: %s\n", GPU_GetShaderMessage());
|
||||||
|
showMessageBox("Error", msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void updateConfig()
|
||||||
|
{
|
||||||
|
if(platform.gpu.screen)
|
||||||
|
{
|
||||||
|
initTouchGamepad();
|
||||||
|
|
||||||
|
if(platform.studio->config()->crtMonitor)
|
||||||
|
loadCrtShader();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static System systemInterface =
|
static System systemInterface =
|
||||||
{
|
{
|
||||||
.setClipboardText = setClipboardText,
|
.setClipboardText = setClipboardText,
|
||||||
@@ -966,6 +1032,7 @@ static System systemInterface =
|
|||||||
.openSystemPath = openSystemPath,
|
.openSystemPath = openSystemPath,
|
||||||
.preseed = preseed,
|
.preseed = preseed,
|
||||||
.poll = pollEvent,
|
.poll = pollEvent,
|
||||||
|
.updateConfig = updateConfig,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void gpuTick()
|
static void gpuTick()
|
||||||
@@ -990,7 +1057,7 @@ static void gpuTick()
|
|||||||
GPU_UpdateImageBytes(platform.gpu.texture, NULL, (const u8*)tic->screen, TIC80_FULLWIDTH * sizeof(u32));
|
GPU_UpdateImageBytes(platform.gpu.texture, NULL, (const u8*)tic->screen, TIC80_FULLWIDTH * sizeof(u32));
|
||||||
|
|
||||||
{
|
{
|
||||||
if(platform.gpu.useShader)
|
if(platform.studio->config()->crtMonitor && platform.gpu.shader)
|
||||||
{
|
{
|
||||||
SDL_Rect rect = {0, 0, 0, 0};
|
SDL_Rect rect = {0, 0, 0, 0};
|
||||||
calcTextureRect(&rect);
|
calcTextureRect(&rect);
|
||||||
@@ -1012,10 +1079,11 @@ static void gpuTick()
|
|||||||
GPU_BlitScale(platform.gpu.texture, NULL, platform.gpu.screen, rect.x, rect.y,
|
GPU_BlitScale(platform.gpu.texture, NULL, platform.gpu.screen, rect.x, rect.y,
|
||||||
(float)rect.w / TIC80_FULLWIDTH, (float)rect.h / TIC80_FULLHEIGHT);
|
(float)rect.w / TIC80_FULLWIDTH, (float)rect.h / TIC80_FULLHEIGHT);
|
||||||
|
|
||||||
GPU_ActivateShaderProgram(0, NULL);
|
GPU_DeactivateShaderProgram();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
GPU_DeactivateShaderProgram();
|
||||||
blitGpuTexture(platform.gpu.screen, platform.gpu.texture);
|
blitGpuTexture(platform.gpu.screen, platform.gpu.texture);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1077,57 +1145,6 @@ static void emsGpuTick()
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define SHADER(...) #__VA_ARGS__
|
|
||||||
|
|
||||||
static void loadCrtShader()
|
|
||||||
{
|
|
||||||
static const char* VertexShader = "#version 100\n\
|
|
||||||
precision highp float;\n\
|
|
||||||
precision mediump int;\n\
|
|
||||||
attribute vec2 gpu_Vertex;\n\
|
|
||||||
attribute vec2 gpu_TexCoord;\n\
|
|
||||||
attribute mediump vec4 gpu_Color;\n\
|
|
||||||
uniform mat4 gpu_ModelViewProjectionMatrix;\n\
|
|
||||||
varying mediump vec4 color;\n\
|
|
||||||
varying vec2 texCoord;\n\
|
|
||||||
void main(void)\n\
|
|
||||||
{\n\
|
|
||||||
color = gpu_Color;\n\
|
|
||||||
texCoord = vec2(gpu_TexCoord);\n\
|
|
||||||
gl_Position = gpu_ModelViewProjectionMatrix * vec4(gpu_Vertex, 0.0, 1.0);\n\
|
|
||||||
}";
|
|
||||||
|
|
||||||
u32 vertex = GPU_CompileShader(GPU_VERTEX_SHADER, VertexShader);
|
|
||||||
|
|
||||||
if(!vertex)
|
|
||||||
{
|
|
||||||
GPU_LogError("Failed to load vertex shader: %s\n", GPU_GetShaderMessage());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
static const char* PixelShader =
|
|
||||||
#include "ext/shader/crt-lottes.frag"
|
|
||||||
;
|
|
||||||
|
|
||||||
u32 fragment = GPU_CompileShader(GPU_PIXEL_SHADER, PixelShader);
|
|
||||||
|
|
||||||
if(!fragment)
|
|
||||||
{
|
|
||||||
GPU_LogError("Failed to load fragment shader: %s\n", GPU_GetShaderMessage());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
platform.gpu.shader = GPU_LinkShaders(vertex, fragment);
|
|
||||||
|
|
||||||
if(platform.gpu.shader)
|
|
||||||
{
|
|
||||||
platform.gpu.block = GPU_LoadShaderBlock(platform.gpu.shader, "gpu_Vertex", "gpu_TexCoord", "gpu_Color", "gpu_ModelViewProjectionMatrix");
|
|
||||||
GPU_ActivateShaderProgram(platform.gpu.shader, &platform.gpu.block);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
GPU_LogError("Failed to link shader program: %s\n", GPU_GetShaderMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
static s32 start(s32 argc, char **argv, const char* folder)
|
static s32 start(s32 argc, char **argv, const char* folder)
|
||||||
{
|
{
|
||||||
SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_JOYSTICK);
|
SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_JOYSTICK);
|
||||||
@@ -1155,9 +1172,7 @@ static s32 start(s32 argc, char **argv, const char* folder)
|
|||||||
GPU_SetAnchor(platform.gpu.texture, 0, 0);
|
GPU_SetAnchor(platform.gpu.texture, 0, 0);
|
||||||
GPU_SetImageFilter(platform.gpu.texture, GPU_FILTER_NEAREST);
|
GPU_SetImageFilter(platform.gpu.texture, GPU_FILTER_NEAREST);
|
||||||
|
|
||||||
platform.gpu.useShader = true;
|
if(platform.studio->config()->crtMonitor)
|
||||||
|
|
||||||
if(platform.gpu.useShader)
|
|
||||||
loadCrtShader();
|
loadCrtShader();
|
||||||
|
|
||||||
#if defined(__EMSCRIPTEN__)
|
#if defined(__EMSCRIPTEN__)
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ typedef struct
|
|||||||
void (*preseed)();
|
void (*preseed)();
|
||||||
void (*poll)();
|
void (*poll)();
|
||||||
|
|
||||||
|
void (*updateConfig)();
|
||||||
|
|
||||||
} System;
|
} System;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
@@ -67,6 +69,9 @@ typedef struct
|
|||||||
bool checkNewVersion;
|
bool checkNewVersion;
|
||||||
bool noSound;
|
bool noSound;
|
||||||
bool showSync;
|
bool showSync;
|
||||||
|
bool crtMonitor;
|
||||||
|
|
||||||
|
const char* crtShader;
|
||||||
|
|
||||||
} StudioConfig;
|
} StudioConfig;
|
||||||
|
|
||||||
|
|||||||
@@ -339,8 +339,19 @@ typedef struct
|
|||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
union
|
union
|
||||||
|
{
|
||||||
|
struct
|
||||||
{
|
{
|
||||||
tic_bank bank0;
|
tic_bank bank0;
|
||||||
|
tic_bank bank1;
|
||||||
|
tic_bank bank2;
|
||||||
|
tic_bank bank3;
|
||||||
|
tic_bank bank4;
|
||||||
|
tic_bank bank5;
|
||||||
|
tic_bank bank6;
|
||||||
|
tic_bank bank7;
|
||||||
|
};
|
||||||
|
|
||||||
tic_bank banks[TIC_BANKS];
|
tic_bank banks[TIC_BANKS];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user