From f7da6ba4e5ed2f8bac1a69c541b592147e642f0a Mon Sep 17 00:00:00 2001 From: Seth Polsley Date: Tue, 5 Nov 2019 01:40:53 -0600 Subject: [PATCH] Cleaned up unused code for sound in traps --- BasiliskII/src/audio.cpp | 238 +++++-------------------------- SheepShaver/src/rom_patches.cpp | 19 --- SheepShaver/src/rsrc_patches.cpp | 2 +- 3 files changed, 35 insertions(+), 224 deletions(-) diff --git a/BasiliskII/src/audio.cpp b/BasiliskII/src/audio.cpp index 5e7caf70..5ad897e9 100644 --- a/BasiliskII/src/audio.cpp +++ b/BasiliskII/src/audio.cpp @@ -535,7 +535,7 @@ delegate: // Delegate call to Apple Mixer } } - +// not currently using these functions /* * Sound input driver Open() routine */ @@ -567,8 +567,6 @@ int16 SoundInPrime(uint32 pb, uint32 dce) if (code != 2) return -231; // siUnknownInfoType - - uint32 selector = ReadMacInt32(pb + csParam); // 4-byte selector (should match via FOURCC above) return noErr; } @@ -594,10 +592,6 @@ int16 SoundInControl(uint32 pb, uint32 dce) uint32 selector = ReadMacInt32(pb + csParam); // 4-byte selector (should match via FOURCC above) -// uint32 *param = (uint32 *)Mac2HostAddr(pb + csParam); -// uint32 selector = param[0]; -// D(bug(" selector %c%c%c%c\n", selector >> 24, selector >> 16, selector >> 8, selector)); -// uint32 selector_flipped = bswap_32(selector); // endianness of selector needs swapping? switch (selector) { case siInitializeDriver: { // If possible, the driver initializes the device to a sampling rate of 22 kHz, a sample size of 8 bits, mono recording, no compression, automatic gain control on, and all other features off. @@ -626,26 +620,15 @@ int16 SoundInStatus(uint32 pb, uint32 dce) // A0 points to Device Manager parame if (code != 2) return -231; // siUnknownInfoType - // reading directly - uint32 selector = ReadMacInt32(pb + csParam); // 4-byte selector (should match via FOURCC above) - uint32 bufferptr = ReadMacInt32(pb + csParam + 4); // 4-byte address to the buffer in vm memory - - // reading through location in memory -// uint32 *param = (uint32 *)Mac2HostAddr(pb + csParam); -// uint32 selector_flipped = param[0]; -// uint32 selector = bswap_32(selector_flipped); // endianness of selector needs swapping? -// D(bug(" selector %c%c%c%c\n", selector >> 24, selector >> 16, selector >> 8, selector)); -// uint32 bufferptr_flipped = param[1]; // pointer to application-supplied buffer for return data -// uint32 bufferptr = bswap_32(bufferptr_flipped); // endianness of buffer address needs swapping? - // two choices on return // 1: if under 18 bytes, place # of bytes at (pb+csParam) and write from (pb+csParam+4) on // 2: if over 18 bytes, place 0 at (pb+csParam) and directly write into buffer pointed to by bufferptr -// uint8 *buffer = Mac2HostAddr(bufferptr); + uint32 selector = ReadMacInt32(pb + csParam); // 4-byte selector (should match via FOURCC above) + uint32 bufferptr = ReadMacInt32(pb + csParam + 4); // 4-byte address to the buffer in vm memory + switch (selector) { //#if 0 case siDeviceName: { // return name in STR255 format -// const char *str = GetString(STR_SOUND_IN_NAME); const uint8 str[] = { // size 9 0x08, // 1-byte length 0x42, 0x75, // Bu @@ -653,52 +636,17 @@ int16 SoundInStatus(uint32 pb, uint32 dce) // A0 points to Device Manager parame 0x74, 0x2d, // t- 0x69, 0x6e // in }; - const uint8 str2[] = { // size 8 - 0x07, // 1-byte length - 0x41, 0x70, // Ap - 0x70, 0x6c, // pl - 0x65, 0x43, // eC - 0x44 // D - }; - const uint8 str3[] = { // size 12 - 0x0b, // byte size indicator (up to 255 length supported) - 0x49, 0x6e, // start of string in ASCII, In - 0x74, 0x65, // te - 0x72, 0x6e, // rn - 0x61, 0x6c, // al - 0x20, 0x43, // C - 0x44, // D - }; - const uint8 str4[] = { // size 18 - 0x10, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00 // ".AppleSoundInput" - }; WriteMacInt32(pb + csParam, 0); // response will directly be written into buffer - vm_memcpy(bufferptr, str3, 12); -// memcpy(buffer, str, 9); + vm_memcpy(bufferptr, str, 9); return noErr; } case siDeviceIcon: { -// return -192; - + // Borrow ICN resource from cd rom driver, just a hack since loading a true ICN would be better WriteMacInt32(pb + csParam, 0); WriteMacInt32(bufferptr, CDROMIconAddr); return noErr; - // attempt to load from external file into emulator -// FILE *fl = fopen("/Emulators/SheepShaver/Shared/SoundIcon.icn", "r"); -// fseek(fl, 0, SEEK_END); -// long len = ftell(fl); -// uint32 icnbuffer = Mac_sysalloc(len); -// uint8 *ret = (uint8*)Mac2HostAddr(icnbuffer); -// fseek(fl, 0, SEEK_SET); -// fread(ret, 1, len, fl); -// fclose(fl); -// WriteMacInt32(pb + csParam, 4); // will be the address of the icn in memory -// WriteMacInt32(pb + csParam + 4, icnbuffer); -// WriteMacInt32(bufferptr,icnbuffer); -// return noErr; - // 68k code causes crash in sheep and link error in basilisk // M68kRegisters r; // static const uint8 proc[] = { @@ -733,172 +681,54 @@ int16 SoundInStatus(uint32 pb, uint32 dce) // A0 points to Device Manager parame } case siInputSource: { -// uint32 addr = Mac_sysalloc(1); -// WriteMacInt32(addr, 0); -// param[0] = 4; -// param[1] = addr; -// WriteMacInt32(param[1], 0); -// const uint32 opt = 0; // 0 if no options box supported and 1 if so -// const uint8 ind[] = { -// 0x00, 0x00, 0x00, 0x00 -// }; -// param[0] = 0;s -// memcpy((void *)buffer, ind, 4); -// uint8 *src = (uint8 *)Mac2HostAddr(Mac_sysalloc(1)); -// *src = 0x00; -// param[0] = 4; -// param[1] = Host2MacAddr(src); -// return -231; -// uint32 opt = Mac_sysalloc(4); -// WriteMacInt32(opt, 0); -// param[0] = 4; -// param[1] = opt; -// return -231; - WriteMacInt32(pb + csParam, 4); - WriteMacInt32(pb + csParam + 4, 1); - return noErr; + // return -231 if only 1 or index if more + return -231; + +// WriteMacInt32(pb + csParam, 4); +// WriteMacInt32(pb + csParam + 4, 1); // index 1 +// return noErr; } - case siInputSourceNames: { // list of sources in str# resource format -// return -231; + case siInputSourceNames: { // list of sources in STR# resource format + // return -231 if only 1 or handle to STR# resource if more + return -231; -// const char names[] = { -// '\x00', '\x02', -// '\x0b', -// 'I','n','t','e','r','n','a','l',' ','C','D', -// '\x0a', -// 'M','i','c','r','o','p','h','o','n','e','\0' +// const uint8 str[] = { +// 0x00, 0x02, // 2-byte count of #strings +// 0x0b, // byte size indicator (up to 255 length supported) +// 0x49, 0x6e, // start of string in ASCII, In +// 0x74, 0x65, // te +// 0x72, 0x6e, // rn +// 0x61, 0x6c, // al +// 0x20, 0x43, // C +// 0x44, // D +// 0x0a, // size is 10 +// 0x4d, 0x69, // Mi +// 0x63, 0x72, // cr +// 0x6f, 0x70, // op +// 0x68, 0x6f, // ho +// 0x6e, 0x65, // ne // }; -// const char names2[] = { -// '\x00', 'e', 'n', 'o', 'h', 'p', 'o', 'r', 'c', 'i', 'M', '\x0a', 'D', 'C', ' ', 'l', 'a', 'n', 'r', 'e', 't', 'n', 'I', '\x0b', '\x02', '\x00' -// }; -// SheepVar names_str(26); -// strcpy((char*)Mac2HostAddr(names_str.addr()),names2); +// // WriteMacInt32(pb + csParam, 0); -// WriteMacInt32(bufferptr, names_str.addr()); -// return noErr; - -// SheepString names("\00bInternal CD"); -// WriteMacInt32(pb + csParam, 0); -// WriteMacInt32(bufferptr, names.addr()); -// return noErr; -// uint32 nameshandle = Mac_sysalloc(14); - -// SheepVar names_str(25); - const uint8 str[] = { - 0x00, 0x02, // 2-byte count of #strings - 0x0b, // byte size indicator (up to 255 length supported) - 0x49, 0x6e, // start of string in ASCII, In - 0x74, 0x65, // te - 0x72, 0x6e, // rn - 0x61, 0x6c, // al - 0x20, 0x43, // C - 0x44, // D - 0x0a, // size is 10 - 0x4d, 0x69, // Mi - 0x63, 0x72, // cr - 0x6f, 0x70, // op - 0x68, 0x6f, // ho - 0x6e, 0x65, // ne - }; - const char str2[] = { - 0x00, 0x01, // 2-byte count of #strings - 0x02, // string size is 2 - 0x43, 0x44, // CD - 0x00 - }; - SheepString names(str2); -// vm_memcpy(names_str.addr(), str, 25); - WriteMacInt32(pb + csParam, 0); // vm_memcpy(bufferptr, str, 25); - WriteMacInt32(bufferptr, names.addr()); - return noErr; - -// vm_memcpy(nameshandle, str, 14); -// memcpy(names, str, 14); - // attempt to load from external file into emulator -// FILE *fl = fopen("/Emulators/SheepShaver/Shared/soundnames.rsrc", "r"); -// fseek(fl, 0, SEEK_END); -// long len = ftell(fl); -// uint8 *ret = (uint8*)malloc(len); -// fseek(fl, 0, SEEK_SET); -// fread(ret, 1, len, fl); -// fclose(fl); -// SheepVar names_strs(len); -// vm_memcpy(names_strs.addr(), ret, len); -// WriteMacInt32(pb + csParam, 0); -// WriteMacInt32(bufferptr, names_strs.addr()); // return noErr; -// uint32 name = Mac_sysalloc(14); -// Host2Mac_memcpy(name, str, 14); -// uint32 handle = Host2MacAddr(names); -// param[0] = 4; -// memcpy((void *)param[1], str, 14); -// return noErr; -// WriteMacInt16(param[1], 1); -// const char *str = "Internal CD"; -//// Host2Mac_memcpy(param[1]+sizeof(uint16), str, strlen(str)); -//// uint16 *num = new uint16; // number of sources (2-bytes at start of infoData -//// *num = (uint16) 1; -//// const char *str = "Built-In";//GetString(STR_SOUND_IN_SOURCE); -//// param[0] = sizeof(uint16) + strlen(str); -//// memcpy((void *)param[1], num, sizeof(uint16)); -// memcpy((void *)param[1], str, strlen(str)); -// return -231; // when only 1 source, return siUnknownInfoType } case siOptionsDialog: { -// WriteMacInt32(param[1], 0); -// const uint32 opt = 0; // 0 if no options box supported and 1 if so -// param[0] = 0; -// memcpy((void *)param[1], &opt, sizeof(opt)); -// const uint8 ind[] = { -// 0x00, 0x00, 0x00, 0x00 -// }; -// uint32 opt = Mac_sysalloc(4); -// WriteMacInt32(opt, 0); -// param[0] = 0; -// WriteMacInt32(bufferptr, 0); + // 0 if no options box supported and 1 if so WriteMacInt32(pb + csParam, 4); WriteMacInt32(pb + csParam + 4, 0); -// uint8 *src = (uint8 *)Mac2HostAddr(Mac_sysalloc(1)); -// *src = 0x00; -// param[0] = 4; -// param[1] = Host2MacAddr(src); -// uint32 opt = Mac_sysalloc(4); -// WriteMacInt32(opt, 0); -// param[0] = 4; -// param[1] = opt; return noErr; } case siPlayThruOnOff: { -// WriteMacInt32(param[1], 0); -// const uint32 plt = 7; // playthrough volume, 0 is off and 7 is max -// param[0] = 0; -// memcpy((void *)param[1], &plt, sizeof(plt)); -// uint32 opt = Mac_sysalloc(4); -// WriteMacInt32(opt, 0); -// param[0] = 0; -// WriteMacInt32(bufferptr, 7); + // playthrough volume, 0 is off and 7 is max WriteMacInt32(pb + csParam, 4); - WriteMacInt32(pb + csParam + 4, 7); -// uint32 opt = Mac_sysalloc(4); -// WriteMacInt32(opt, 0); -// param[0] = 4; -// param[1] = opt; + WriteMacInt32(pb + csParam + 4, 0); return noErr; } //#endif - case FOURCC('p', 't', 'k', 'd'): { - return -231; - WriteMacInt32(pb + csParam, 1); - WriteMacInt8(pb + csParam + 4, 0); - return noErr; - } - case FOURCC('i', 'n', 'p', 't'): { - return -231; - } default: return -231; // siUnknownInfoType } diff --git a/SheepShaver/src/rom_patches.cpp b/SheepShaver/src/rom_patches.cpp index 241445ff..ef51c828 100644 --- a/SheepShaver/src/rom_patches.cpp +++ b/SheepShaver/src/rom_patches.cpp @@ -2341,15 +2341,6 @@ static bool patch_68k(void) if (ReadMacInt32(thing + componentPFCount)) AddSifter(ReadMacInt32(thing + componentPFResType), ReadMacInt16(thing + componentPFResID)); } -// else if (ReadMacInt32(thing) == FOURCC('s','i','n','p')) { -// D(bug("found sinp component at offset %08x in ROM\n", thing)); -// } -// else if (ReadMacInt32(thing) == FOURCC('c','d',' ',' ')) { -// D(bug("found sinp component at offset %08x in ROM\n", thing)); -// } -// else if (ReadMacInt32(thing) == FOURCC('i','m','i','c')) { -// D(bug("found sinp component at offset %08x in ROM\n", thing)); -// } thing = find_rom_resource(FOURCC('t','h','n','g'), 4711, true); } @@ -2372,16 +2363,6 @@ static bool patch_68k(void) } } -// // Find sound input in ROM -// D(bug("Searching for sound components with type sdev in ROM\n")); -// uint32 sinp = find_rom_resource(FOURCC('s','i','n','p')); -// if (sinp == 0) { -// sinp = find_rom_resource(FOURCC('c','d',' ',' ')); -// if (sinp == 0) { -// sinp = find_rom_resource(FOURCC('i','m','i','c')); -// } -// } - return true; } diff --git a/SheepShaver/src/rsrc_patches.cpp b/SheepShaver/src/rsrc_patches.cpp index 12be57f5..3658766b 100644 --- a/SheepShaver/src/rsrc_patches.cpp +++ b/SheepShaver/src/rsrc_patches.cpp @@ -517,7 +517,7 @@ void CheckLoad(uint32 type, int16 id, uint16 *p, uint32 size) D(bug(" patch applied\n")); } - } else if (type == FOURCC('D','R','V','R') && (id == -16501)){// || id == -16500)) { // -16501 patches the native driver and -16500 traps out to code, but very hard to re-implement there! + } else if (type == FOURCC('D','R','V','R') && (id == -16501)){// || id == -16500)) { // -16500 will patch over native driver and traps out to code, but very hard to re-implement there! D(bug("DRVR -16501/-16500 found\n")); // Install sound input driver memcpy(p, sound_input_driver, sizeof(sound_input_driver));