This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
Messages - utz
151
« on: March 02, 2013, 09:50:21 am »
I would love to use WabbitEmu for TI82 development, especially since it also runs on linux. Sadly, Wabbit's 82 display emulation is totally broken as far as I can tell. Everything else seems to work, though.
I'm suspecting that WabbitEmu actually emulates the 82CS hardware-wise. Which of course won't work for pre-19.006 ROMs.
152
« on: March 02, 2013, 09:32:25 am »
Thanks y'all for your responses! I'm glad some people here are interested Looks nice! How much space does the program take?
At the moment, the editor+sound routine are about 1.4 KB, plus 10 K for user data. It will be extended to use all available RAM once the multiload/save feature is done. It's a super cool project, i wish i could test it out or help out in some way. Maybe we could look for optimizations to the hex editor source?
I'll release the source code as soon as loading/saving and copy/paste functions are done. Also if somebody wants to port this to any of the newer models, you're more than welcome to do so. What I really need at the moment is a working on-calc RLE+LZ77 packer/depacker. It could be quite slow, as long as it's small in size and efficient enough. I wonder why are all the more advanced calc trackers are only on the 82? Does it just have better hardware for sound or something?
I guess there's a simple reason for this - right now it seems I'm the only one developing 1-bit sound tools for the TI, and TI82 is the only model I own. TI82 isn't perfect, 86 would be the best of course That said this seems very cool. I really hope I can try this at one point. I have VirtualTI and the calc but I'm unsure if my ROMs runs it (my calc has 16.0).
Does anyone know how to send this to VirtualTI and WabbitEmu? It doesn't appear to support 82b files... (it just says transmission error on all 3 ROMs I tried)
VTI emulates the sound more or less correctly, but has a few problems with display timing. Also you need to switch off sound emulation before turning off VTI or it will go zombie. WabbitEmu's 82 display emulation on the other hand is totally broken as far as I can tell. both in recent and older builds. It'll also do the sound part right, though. I think the readme says 16-19.0 are all fine, but 19.006 isn't supported.
Yeah I'll make a 19.006 version eventually, but it's not so high on my list of priorities. Personally, I think the 82CS sucks as a development machine - crap link port that wears out easily, and CrAsh 19.006 isn't exactly stable. As far as the note/hex issue is concerned - this was one of the most difficult questions in relation to this project, and in the end I decided against it for a number of reasons: - The conversion is rather arbitrary, so neither a linear nor a logarithmic function can be used for conversion. The only possibility would in fact be a lookup table for all 3,5 octaves. Also every 1-bit sound routine uses slightly different values, so in fact I'd need to make a table for every sound routine I implement. - Atm the plan is to have at least 3-4 engines, with different functionality. Eg, there could be a 2-channel sound routine which uses the additional 2 channels for effect commands (timing, timbre, etc). Having a simple hex editor avoids the need to adapt the display driver to the sound routines each time. - Since tuning is always a bit problematic with 1-bit routines, it is basically required to have a possibility for manually detuning the note data. So, if I were to make the input so it uses Note name + offset/detune parameter, I couldn't do the direct hex-to-RAM conversion anymore, which is the main secret ingredient for keeping the editor size down. Also, translating back the values is non-deterministic, since on higher octaves notes can be just 1 byte apart. - Last but not least, if there were note names, how would you go about entering them? Either you type them in manually, which would be far less efficient than the current method. Or I tie notes to different keys, which would only be feasible if you turn the calculator sideways to edit. Plus, it would require a complex lookup considering the octave value must be taken into account. That being said, someone has already suggested a useful feature that I'll probably try to implement somehow. Basically, it would translate the hex value which is currently highlighted by the cursor back into a note name, plus possible offset. Concerning a port to later TI models, with or without added functionality, you are more than welcome to give it a try. As I said, I'll release the sources with one of the next updates. There are a couple of potential issues I see with it: The sound routine might need a major rewrite, unless it is somehow possible to slow down the cpu to the speed of a regular 82/83. Also reading song data directly from Flash will most likely be too slow. Well, I know zilch about the new models, so I'll leave it up to you to figure this out In-game use is not a good idea, because 1-bit routines block interrupts as well as any running keyhandlers, and take up 99% of CPU time, regardless of clock speed. (You could use it for title screens though. In this case these routines might be a better choice though.)
153
« on: March 01, 2013, 11:08:54 am »
Want to make chiptune music on your calculator? Well, now you can. Download Houston Tracker 0.3 Includes TI82/83/83+/84+ binaries and offline manual. Source code newWebsite Sound demoSound demo for version 0.2 This is an early beta. Please post bug reports, feature requests and other feedback in this thread, or send me a mail (see the manual for my address). Features: - 1-bit PFM and XOR sound(similar to various ZX Spectrum beeper routines) - 2-4 tone channels + 2 interrupting drum sounds - (Pseudo-)Stereo sound (channels hardpanned l/r) - Compact editor+player - Linear song data, no patterns - Multiple sound routines Not done yet: - Internal compression (working on it) - Dumping/Loading song data via PC soundcard - TI85/86/73 ports The editor is very simple and should be intuitve to use if you're familiar with the concept of trackers. However it uses hexadecimal input instead of note names. Why on earth, you may ask? Well, as you know there are only about 27K of RAM available on the TI82, and there are no fancy flash carts or sd card readers. So I tried to keep the editor as lightweight as possible, and max out space for song data instead. Implementing a note table lookup might easily double the size of the editor Besides, the hex-do has another advantage: you can easily use non-western tuning, make "phat" basslines with detuning, etc... Well, don't worry, the manual includes a pitch-to-hex conversion table. If you feel like making a better one, please do! Questions? Suggestions? Post them here! UPDATE May 31st, 3013 - Version 0.3 is releasedSome neat new stuff, including the long awaited "light" version. For details, click here. UPDATE April 16th, 2013 - Version 0.21 is released Added TI83 support and fixed a critical bug which prevented one of the sound routines from exiting. TI83+ port will probably follow soon. UPDATE April 15th, 2013 - Version 0.2 is released Contains loads of new stuff, for details check this postDownload link remains the same, see above.
154
« on: November 02, 2012, 09:11:44 am »
double post, yay Update: TI 1-Bit Pack 0.2 released Changelog: - Added TI83/Ion support. - Added Octode engine (1tracker version) - Removed all ROM calls - Various code optimizations - Moved all song data to external music.asm templates DownloadBtw, I don't have any plans to support TI83+ and later models. The routines should run on these models, too, but at the wrong speed. You'll need to make the necessary speed modifications yourself.
155
« on: October 28, 2012, 08:00:28 pm »
The signal is really loud on hardware, too. Had to put a dimmer before I could even record the sound.
156
« on: October 28, 2012, 12:01:29 pm »
Wow, that sounds really cool. I've never played with sound before but that sounds amazing If something like that could fit behind a program that'd be really cool. Is there an emulator that can emulate sound? WabbitEmu? I used to use the old radio trick to listen to sound.
couldn't get WabbitEmu to work, unfortunately. VirtualTI will emulate the sound with acceptable quality, though.
157
« on: October 27, 2012, 06:52:14 pm »
I can only test on ROM 19.0, since I have just one TI. Theoretically, the routines should work with all ROM versions. If you adapt them for Ion, they should also run on TI83. The routines don't make any calls to ROM except one JP EXIT_2_TIOS at the end, which can be safely replaced with a normal ret.
158
« on: October 26, 2012, 11:50:21 am »
So, I've finally managed to get things going. TI82 1-Bit Pack 0.1 - This package includes sources for 5 different 1bit sound routines from ZX Spectrum, with precompiled examples. Texas Beeper Massacre - A short music demo collection, in 82p format. Requires CrASH. warpzone - A 4 channel 1bit track playing on TI82 (Soundcloud) Enjoy, and post your bug reports/suggestions here.
159
« on: October 14, 2012, 12:36:09 pm »
In Sachsen wie schon erwähnt sind Grafiktaschenrechner soweit ich weiß an fast jedem Gymnasium zugelassen (an unserer Schule der TI-84 Plus). CAS-Rechner dürfen wir hingegen nicht benutzen, aber es gibt ja genügend Apps und Programme, mit denen man einen GTR erweitern kann.
ach was, Sachsen ist immer noch TI-Land? War schon zu meiner Schulzeit in den 90ern so, damals gabs natürlich noch den guten alten TI82.
160
« on: October 12, 2012, 08:01:09 am »
Na, dann wolln wir den deutschsprachigen Bereich mal etwas beleben. Mich würde mal folgende Frage interessieren: In welchen Bundesländern sind Grafiktaschenrechner an Schulen zugelassen? Also, postet hier rein und ich update die Liste Österreicher und Schweizer sind natürlich auch willkommen Gruß, -utz Zugelassen/Pflicht: - Baden-Württemberg - Niedersachsen - Sachsen - Schweiz Verboten: - Brandenburg - NRW (?)
161
« on: October 09, 2012, 08:24:43 am »
Oh boy, now that's rather embarassing you're absolutely right, that value should be $c0, not $0c. thanks a ton for debugging my crappy code, calc84maniac! the routine is working on real hw now, just need to fix some minor glitches. I'll post the finished routine here, anybody who is interested can use it for their own purposes, of course. If things go well, there'll be more routines coming up, with more channels and better sound than this one. I'll keep you guys updated.
162
« on: October 08, 2012, 07:52:54 am »
@DJ_O: Thanks for the welcome Mateo's Beatbox thingy should work with 16.0, but I've never gotten it to work. (I'm using 19.0 on emu and hardware, btw.)Well, maybe I should have a shot at disassembling that one though. One TI82 music prog that does work is HiFiPad - http://www.ticalc.org/archives/files/fileinfo/147/14793.html. Too bad it's not really useful for making actual music, and the code is pretty ugly, too. Didn't know about WabbitEmu, going to check it out right away. @calc84maniac: hmm, good point. I've played around a bit with the interrupts, and disabled them during the whole play routine - sadly, still no sound on hardware. Strangely enough, when I enable interrupts during exchanges with the shadow registers (which is definately not recommendable according to all docs), I get much more stable sound on VTI. Gonna look more into that. ed: tried WabbitEmu, seems it can't run CrASH properly?!?
163
« on: October 07, 2012, 07:26:23 pm »
Update: Successfully ported some ZX Spectrum Sound routines to TI82, they can be downloaded here. Update 2012/11/02: Added TI83 support, and some other stuff. Download from the link above. Hai guys, Since this is my first post here, allow me to quickly introduce myself: I'm utz, aka irrlicht project, a musician working mainly with the Sinclair ZX Spectrum and it's beeper. A while ago I found my old TI82 from school times again. Considering how similar the two platforms are, I thought it might be interesting to port some ZX Spectrum 1-bit sound routines over to the TI. Unfortunately I'm not really a coder. Well, long story short, after quite a bit of fiddeling around I got a simple two-channel routine working on VTI emulator. Sadly, it's not working on real hardware though. The code below is for TI82/CrASH, obviously, though with some minor modifications it should work equally well (well, not so well, after all) on other Z80-based TIs. Annotations containing a + mark the modifications done by me. So, I'm hoping there are still some TI82/83 coders lurking on this forum. Any ideas as to why this isn't working on hardware are highly welcome, and I'll reward you with... ermmm... life-long honors and that kinda stuff .INCLUDE CRASH82.INC .DB "HUBY 1-BIT TI82 0.5", 0 #define db .byte #define dw .word
;Huby beeper music engine by Shiru ([email protected]) 04'11 ;Two channels of tone, no volume, global speed ;One drum, replaces note on the first channel ;The main feature of this engine is the size, just 100 bytes ;Feel free to do whatever you want with the code, it is PD
ld hl,musicData ld a,%00010000 ;+ set interrupts to fastest mode out (4),a call play play ld e,(hl) ;read speed word inc hl ld d,(hl) inc hl ld (speed),de ;store it ld e,(hl) ;read patterns offset inc hl ld d,(hl) ;it will be always in DE, and HL is order list pointer now
readPos inc hl ld a,(hl) ;read first byte of order list or a ret z ;if it is zero, it is end of the song inc hl push hl ;store order list pointer push de ;store patterns offset ld l,(hl) ;read second byte of order list ld bc,2*256 ;calculate addresses of two patterns read ld h,c ;pattern number*8 add hl,hl add hl,hl add hl,hl add hl,de ;add patterns offset push hl ;store pattern address ld l,a ;now second address djnz read exx pop hl ;restore pattern addressed in alternative set pop de
ld b,8 ;play 8 rows readRow ld a,(hl) ;read first note inc hl ;increase first pattern pointer ex af,af' ld a,(de) ;read second note inc de ;increase second pattern pointer exx ld h,a ex af,af' ld l,a cp $2c ;if first note is $2c, it is drum sound jr z,$+3 xor a ld (slide),a speed .EQU $+1 ld bc,0 di
soundLoop xor a ;clear carry and set A to zero dec e ;counter of first channel jr nz,l1 ld e,l ;reload if overflow sub l ;and set carry if note is not zero (mute) slide .EQU $ nop ;slide for drum l1 dec d ;counter of second channel jr nz,l2 ld d,h ;reload if overflow sub h ;and set carry if note is not zero (mute) l2 sbc a,a ;if carry, A=255, otherwise A=0 xor %11111100 ;+ $ff -> $c0, $0 -> $fc and %00111100 add a,12 out (0),a out (0),a out (0),a out (0),a ;+ 4x to compensate higher cpu speed
ld a,%10111111 ;+ new keyhandler out (1),a in a,(1) ;read keyboard cpl bit 6,a jr nz,l3 ;if any key is pressed, exit loop dec bc ld a,b or c jr nz,soundLoop ;113/123t
l3 ld hl,$2758 ;restore alternative HL to default value exx ei jr nz,$+4 ;if any key was pressed, break loop djnz readRow
pop de pop hl jr z,readPos ;if no key was pressed, continue ld a,%00010110 ;+ set interrupts back to normal out (4),a jp EXIT_2_TIOS ;normally ret, use CrASH syscall to return properly instead
musicData dw $06f3 dw p-8 db $01,$02 db $01,$03 db $04,$05 db $06,$07 db $08,$09 db $0a,$0b db $0c,$0d db $0e,$0f db $01,$02 db $01,$03 db $04,$05 db $06,$07 db $08,$09 db $0a,$0b db $0c,$0d db $0e,$0f db $10,$02 db $11,$03 db $12,$05 db $13,$07 db $14,$09 db $15,$0b db $16,$0d db $17,$0f db $18,$02 db $18,$03 db $19,$05 db $19,$07 db $1a,$09 db $1a,$0b db $1b,$0d db $1c,$0f db $01,$02 db $01,$03 db $04,$05 db $06,$07 db $08,$09 db $0a,$0b db $0c,$0d db $0e,$0f db $1d,$02 db $1d,$03 db $1e,$05 db $1e,$07 db $1f,$09 db $1f,$0b db $20,$0d db $21,$0f db $10,$02 db $11,$03 db $12,$05 db $13,$07 db $14,$09 db $15,$0b db $16,$0d db $17,$0f db $18,$02 db $18,$03 db $19,$05 db $19,$07 db $1a,$09 db $1a,$0b db $1b,$0d db $1c,$0f db $00 p db $2c,$3c,$b3,$3c,$b3,$3c,$b3,$3c db $59,$59,$50,$50,$4b,$4b,$4b,$4b db $4b,$4b,$4b,$4b,$59,$59,$59,$59 db $2c,$38,$b3,$38,$b3,$38,$b3,$38 db $43,$43,$43,$43,$43,$43,$43,$43 db $2c,$38,$b3,$38,$2c,$38,$2c,$38 db $43,$43,$43,$43,$4b,$4b,$50,$50 db $b3,$32,$b3,$32,$2c,$32,$b3,$32 db $4b,$4b,$50,$50,$59,$59,$59,$59 db $2c,$32,$b3,$32,$b3,$32,$b3,$32 db $59,$59,$59,$59,$4b,$4b,$4b,$4b db $2c,$43,$b3,$43,$b3,$43,$b3,$43 db $50,$50,$50,$50,$50,$50,$50,$50 db $2c,$43,$b3,$43,$2c,$a0,$2c,$86 db $50,$50,$50,$50,$43,$43,$3c,$3c db $2c,$3c,$e2,$3c,$e2,$3c,$2c,$3c db $2c,$3c,$e2,$3c,$2c,$3c,$2c,$3c db $2c,$38,$e2,$38,$e2,$38,$e2,$38 db $e2,$38,$2c,$38,$2c,$38,$e2,$38 db $2c,$32,$e2,$32,$2c,$32,$e2,$32 db $e2,$32,$e2,$32,$2c,$32,$e2,$32 db $2c,$43,$e2,$43,$e2,$43,$e2,$43 db $2c,$43,$2c,$43,$2c,$2c,$2c,$2c db $f0,$3c,$f0,$3c,$f0,$3c,$f0,$3c db $f0,$38,$f0,$38,$f0,$38,$f0,$38 db $f0,$32,$f0,$32,$f0,$32,$f0,$32 db $f0,$43,$f0,$43,$f0,$43,$f0,$43 db $f0,$43,$f0,$43,$f0,$a0,$f0,$86 db $78,$3c,$78,$3c,$78,$3c,$78,$3c db $78,$38,$78,$38,$78,$38,$78,$38 db $78,$32,$78,$32,$78,$32,$78,$32 db $78,$43,$78,$43,$78,$43,$78,$43 db $78,$43,$78,$43,$78,$a0,$78,$86
|