home *** CD-ROM | disk | FTP | other *** search
-
- @@@@@@@@
- @@@@@@@@@@@@@@@@@@
- @@@@@@ @@@@@@
- @@@@@
- @@@@@ @@@@ @@@@ @@ @@@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@@
- @@@@@ @@ @@ @@@@ @@ @@ @@ @@@ @@ @@@@ @@ @@ @@
- @@@@@ @@@@@@@@ @@ @@ @@ @@@@@ @@ @@ @@ @@ @@
- @@@@@ @@ @@ @@@@@@@@ @@ @@ @@ @@@ @@ @@ @@@@ @@ @@
- @@@@@ @@@@ @@@@ @@@@ @@@@ @@@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@@@
- @@@@@ @@
- @@@@@@ @@@@@@ ╔SSUE #5
- @@@@@@@@@@@@@@@@@@ ═ARCH 7, 1993
- @@@@@@@@
-
- -----------------------------------------------------------------------------
- ┼DITOR'S ╬OTES:
- BY ├RAIG ╘AYLOR
-
- ╔T SEEMS THAT EACH ISSUE OF ├= ╚ACKING HAS ALWAYS BEGAN WITH A "╙ORRY, ╔T'S
- LATE BUT HERE IT IS MESSAGE." - ╫ELL, THIS ONE WILL START OUT AGAIN LIKE
- THAT - ╘HIS ISSUE WAS ORIGINALLY SCHEDULED TO BE OUT THE MIDDLE OF ╩ANUARY
- BUT DUE TO SEVERAL DELAYS IN OBTAINING ARTICLES AND MY DELAYING TRYING TO
- DEBUG THE MULTI-TASKING SOURCE CODE IT'S BEEN HELD UP UNTIL NOW.
-
- ═Y APOLOGIES TO THE AUTHORS WHO HAVE HAD THEIR ARTICLES INTO ME ON TIME -
- SCHOOL IS COMING FIRST FOR ME AND HAVING TO DO A LOT OF CODING FOR SEVERAL
- CLASSES WAS THE MAJOR CONTRIBUTING FACTOR TO THE DELAYS.
-
- ╬OW, AFTER THE APOLOGIES ARE OUT OF THE WAY - ╠ET'S TAKE A LOOK AT WHAT HAS
- HAPPENED SINCE LAST TIME ╔ WROTE.
-
- - ╥╒╬ MAGAZINE IS NO LONGER WITH US.
-
- ┴S ONE OF THE LAST HOLD-OUTS ╔ WAS EXPECTING ╥╒╬ MAGAZINE TO KEEP ON PRINTING
- UNTIL THE ├OMMODORE 64/128'S REALLY DID DIE OUT BUT APPARENTLY THE PUBLISHERS
- DECIDED IT WOULDN'T BE SO. ╘HIS LEAVES THE ╘WIN ├ITIES MAGAZINE AS THE ONLY
- ╒╙ MAGAZINE IN PUBLICATION FOR THE ├OMMODORE (6502 BASED) COMPUTERS THAT ╔ AM
- AWARE OF. ╙PEAKING OF ╘WIN ├ITIES (NOT SURE IF HE'S COMBINING THE 64/128 OR
- JUST COMING OUT WITH SEPERATE ╘WIN ├ITIES MAGAZINES) DOES ANYBODY KNOW OR
- HAVE ANY INFORMATION ON WHEN THE NEXT ISSUE WILL BE OUT? ╧R HAS MY
- LASTEST ISSUE JUST NOT BEEN SENT OUT?
-
- ┴S ╔ WAS WRITING THIS ╔ GOT THE LATEST ISSUE OF ╘WIN ├ITIES WHICH HAS
- EXPANDED TO ├=64 COVERAGE ALSO. ╘HE NEW ISSUE LOOKS VERY NICE, ABOUT 53
- PAGES OF SO OF GOOD DECENT MATERIAL. ╔'D RECOMMEND GET A SUBSCRIPTION FOR
- THOSE OF YOU WHO ARE LOOKING TO STILL HEAR ABOUT NEW ├OMMODORE PRODUCTS.
-
- ╔'D LIKE TO GET PEOPLE'S REACTIONS ON THE DEMISE OF ╥╒╬ AND WHAT WILL
- PEOPLE WILL THINK WILL PROBABLY BE THE MAIN SOURCE OF INFORMATION FOR ├=
- OWNERS. ┴ LOT OF PEOPLE READING THIS MAGAZINE ARE ON THE COMP.SYS.CBM
- NEWSGROUP BUT ╔'M WONDERING ABOUT INDIVIDUALS WHO DO NOT HAVE ACCESS TO
- SUCH A NEWSGROUP AND DO NOT HAVE ACCESS TO THE INTERNET. ╠ET ME KNOW WHAT
- YOU THINK - HOPEFULLY THROUGH A FRIEND W/ ACCESS TO THE INTERNET. ╙ORT OF
- A CATCH-22 ╔ GUESS.
-
- - ┴ ═AIL-╙ERVER HAS BEEN SETUP TO AUTOMATE SENDING ISSUE REQUESTS.
-
- ╘HE FULL DETAILS OF HOW TO USE THE ═AIL-╙ERVER IS IN A DOCUMENTATION FILE
- CONTAINED WITHIN BUT THIS MAIL-SERVER (WHOSE SOURCE CODE IS AVAILABLE FOR
- ANYONE WHO WISHES TO SEE IT WRITTEN IN ╓┴╪ ─├╠ CODE) ALSO ALLOWS FILE
- REQUESTS WHICH WILL BE UUENCODED AND SENT TO YOU. ╔ AM TRYING TO HAVE ALL OF
- THE PROGRAMS IN EACH ISSUE AVAILABLE VIA REQUEST AS FOR SOME PEOPLE IT IS
- A MINOR PAIN TRYING TO EXTRACT AND COMPILE THE PROGRAMS CONTAINED WITHIN.
-
- - ╔ SAW A NOTE RECENTLY THAT THE SPEED-UP BOARD WORK WAS STILL BEING DONE.
-
- ─OES ANYBODY KNOW ANYTHING FURTHER ABOUT THIS? ╔'M INTERESTED IN THIS AND
- HOW IT WOULD BE CARRIED OUT / DONE BUT ASIDE FROM AN OCCASIONAL POST HERE
- AND THERE ABOUT IT ╔ ACTUALLY HEAR VERY LITTLE.
-
- - ╘HERE IS ALSO WORK ON AN ┴NSI ├ COMPILER BEING DONE.
-
- ╥ECENTLY A GROUP OF PEOPLE (ABOUT 9 CURRENTLY) ARE WORKING ON A ├ COMPILER
- FOR THE ├=64 AND ├=128 WHICH WILL EVENTUALLY SUPPORT THE FULL ┴╬╙╔ ├
- LIBRARY. ┴ LARGE LIST OF EXTENSIONS HAVE BEEN PROPOSED AND THE COMPILER
- WILL PROBABLY BE RELEASED AS EITHER SHAREWARE OR POSSIBLY, PUBLIC DOMAIN.
-
- ┴CK! - ╘HIS MAGAZINE KEEPS GROWING. ╘HE LAST ISSUE WAS APPROX.
- SOMEWHERE AROUND 3000 LINES, THIS ONE IS JUST A TAD OVER 6000. ╔'M
- SURE THAT WE'RE NOT SUFFERING THE QUALITY JUST BECAUSE OF THE
- QUANTITY. :-) ┬E SURE TO TAKE A LOOK AT THE PREVIOUS BACK ISSUES
- AVAILABLE VIA THE ═AIL-╙ERVER AND DON'T BE AFRAID TO SUGGEST COMMENTS
- OR SUGGESTIONS. ╫HILE USUALLY THE AUTHORS ARE TOO BUSY TO TAKE IDEAS
- FOR NEW PROGRAMS WE ALWAYS WELCOME TO HEAR HOW USEFUL YOU FIND CERTAIN
- PROGRAMS INCLUDED HEREIN ETC.
-
- ┴LSO ╔ AM LOOKING FOR ARTICLES ON ANY TYPE OF SOFTWARE PROJECT, HARDWARE
- PROJECT OR GENERAL THEORY ARTICLES THAT YOU WOULD LIKE TO SUBMIT. ╩UST
- LEAVE ME A MESSAGE VIA EMAIL AT "DUCK@PEMBVAX1.PEMBROKE.EDU". ╬OTE ALSO
- THAT ╔'VE JUST SIGNED UP FOR A ╟┼╬╔┼ ACCOUNT AND CAN BE REACHED THERE VIA
- ├.╘┴┘╠╧╥37 ONCE MY ACCOUNT IS APPROVED.
-
- =============================================================================
-
- ╨LEASE NOTE THAT THIS ISSUE AND PRIOR ONES ARE AVAILABLE VIA ANONYMOUS
- ╞╘╨ FROM CCOSUN.CALTECH.EDU UNDER PUB/RKNOP/HACKING.MAG IN ADDITION TO THE
- MAILSERVER WHICH IS DOCUMENTED IN THIS ISSUE.
-
- =============================================================================
-
- ╬╧╘╔├┼: ╨ERMISSION IS GRANTED TO RE-DISTRIBUTE THIS "NET-MAGAZINE", IN
- WHOLE, FREELY FOR NON-PROFIT USE. ╚OWEVER, PLEASE CONTACT INDIVIDUAL
- AUTHORS FOR PERMISSION TO PUBLISH OR RE-DISTRIBUTE ARTICLES SEPERATELY.
- ┴ CHARGE OF NO GREATER THAN 5 ╒╙. ─OLLARS OR EQUIVLENT MAY BE CHARGED FOR
- LIBRARY SERVICE / DISKETTE COSTS FOR THIS "NET-MAGAZINE."
-
- =============================================================================
- ╔N THIS ╔SSUE:
-
- ═AIL-╙ERVER ─OCUMENTATION
-
- ╘HIS ARTICLES DESCRIBES HOW TO ACCESS THE MAIL-SERVER FOR ├OMMODORE ╚ACKING
- AND INCLUDES A LIST OF CURRENTLY AVAILABLE FILES AND BACK-ISSUES.
-
- ╙TRETCHING ╙PRITES
-
- ╔T'S POSSIBLE TO EXPAND SPRITES TO MORE THAN TWICE THEIR ORIGINAL SIZE, BUT
- THERE IS NO NEED TO EXPAND ALL OF THEM EQUALLY. ╘HIS ARTICLE EXAMINS HOW TO
- EXPAND THEM 2,3, OR MORE MULTIPLES OF THEIR ORIGINAL SIZE.
-
- ╥OB ╚UBBARD'S ═USIC: ─ISASSEMBLED, ├OMMENTED AND ┼XPLAINED
-
- ╘HIS ARTICLE WRITTEN BY ┴NTHONY ═C╙WEENEY, PRESENTS THE VALUABLE SOURCE TO
- ╥OB ╚UBBARD'S FIRST MUSIC ROUTINE. ╘HIS ROUTINE WAS USED IN ╥OB'S FIRST 20
- OR 30 MUSICS, INCLUDING SUCH CLASSICS AS ╘HING ON A ╙PRING (╟REMLIN ╟RAPHICS),
- ├OMMANDO (┼LITE), ╘HRUST (╞IREBIRD), ╔NTERNATIONAL ╦ARATE (╙YSTEM 3), AND
- ╨ROTEUS (ALSO KNOWN AS ╫ARHAWK, BY ╞IREBIRD).
-
- ┌╨═3 AND ┌├├╨ ┼NHANCEMENTS FOR ├╨/═ ╨LUS FROM ╙IMEON ├RAN
-
- ┴LTHOUGH ALL THE ARTICLES TO DATE IN ├= ╚ACKING HAVE FOCUSED ON 6510/ 8502
- PROGRAMMING, THERE HAVE BEEN SOME INTERESTING DEVELOPMENTS ON THE ┌80 FRONT.
- ├128 ├╨/═ USERS SHOULD BE AWARE OF THE BENEFITS OF A NEW SET OF ENHANCEMENTS
- TO THE OPERATING SYSTEM THAT OFFERS INREASED SPEED AND FLEXIBILITY AS WELL
- AS NEW FEATURES. ╔F THAT ISN'T ENOUGH, THIS PACKAGE WILL ALSO RUN ┌├╨╥ 3.3
- UTILITIES AND APPLICATIONS THAT WON'T RUN UNDER STANDARD ├╨/═ ╨LUS.
-
- ═ULTI-╘ASKING ON THE ├=128 - ╨ART 1
-
- ╘HIS ARTICLE EXAMINES THE RUDIMENTS OF ═ULTI-╘ASKING AND ALSO DETAILS THE
- SYSTEM CALLS IN THE ═ULTI-╘ASKING PACKAGE TO BE RELEASED IN THE NEXT ISSUE
- OF ├= ╚ACKING.
-
- ╠╔╘╘╠┼ ╥┼─ ╫╥╔╘┼╥: ═╙-─╧╙ FILE READER/WRITER FOR THE ├128 AND 1571/81.
-
- ╘HIS ARTICLE IS AN EXTENSION ON ╠ITTLE ╥ED ╥EADER WHICH WAS PRESENTED IN THE
- LAST ISSUE AND ALLOWS FOR READING AND WRITING OF ═╙-─OS DISKETTES FROM AND TO
- 1571/81 DRIVES.
-
- =============================================================================
- ═AIL-╙ERVER ─OCUMENTATION
- BY ├RAIG ╘AYLOR (DUCK@PEMBVAX1.PEMBROKE.EDU)
-
- ╫HAT IS A MAIL-SERVER?
-
- ┴ MAILSERVER IS AN AUTOMATED JOB THAT WILL SCAN MY MAIL FILE FOR MESSAGES
- WITH A SUBJECT LINE OF "═┴╔╠╙┼╥╓" AND WILL THEN AUTOMATICALLY CARRY OUT
- CERTAIN OPERATIONS WITHIN THE BODY OF THE MAIL MESSAGE. ╘HIS MAKES IT EASIER
- ON ME AND YOU. ┼ASIER FOR ME SO THAT ╔ DON'T HAVE TO DEAL WITH 50+ MESSAGES
- EACH MONTH ASKING FOR FILES TO BE SENT OUT AND ALSO INSURES THAT YOUR FILES
- THAT YOU REQUESTED WILL BE SENT WITHIN 24 HOURS. ╔N ADDITION IT ALLOWS
- FILES TO BE MORE EASILY SENT AND ACCESSED IN CASE YOU ARE NOT ABLE TO
- EXTRACT THE SOURCE FILES FROM ├= ╚ACKING.
-
- ╔F YOU HAVE ╞╘╨ ACCESS PLEASE SEE THE ┼DITOR'S ╬OTES AT THE START FOR
- INFORMATION ON ╥. ╦NOP'S ╞╘╨ SITE AND HOW TO ACCESS IT AS YOU MAY FIND
- USING THAT SOMEWHAT QUICKER TO USE.
-
- ╚OW TO USE THE MAIL-SERVER / ╫HAT IT IS.
-
- ╘HIS MAIL-SERVER IS INTENDED TO HELP ME KEEP TRACK / MORE EASILY UPDATE MY
- MAILING LIST OF INDIVIDUALS WHO WISH TO SUB-SCRIBE OR GET BACK-ISSUES OF
- ├= ╚ACKING MAILED TO THEM.
-
- ╘O USE IT SIMPLY SEND A MESSAGE TO "DUCK@PEMBVAX1.PEMBROKE.EDU" (ME) WITH A
- SUBJECT LINE OF "═┴╔╠╙┼╥╓" AND THEN WITH ONE OF THE FOLLOWING COMMANDS IN THE
- BODY OF THE MAIL MESSAGE:
-
- ├URRENTLY THE FOLLOWING COMMANDS ARE SUPPORTED:
-
- HELP - SENDS CURRENT DOCUMENTATION F FILE LIST
- SEND ISS<NUMBER>. - SENDS ISSUE # (1-4 CURRENTLY). ╥EMEMBER THE PERIOD!!
- SUBSCRIBE - SUBSCRIBE TO THE MAILING LIST AUTOMATICALLY
- *SUBSCRIBE CATALOG - SUBSCRIBES TO A LIST THAT WILL BE SENT OUT
- EVERYTIME THE CATALOG CHANGES.
- CATALOG - SHOW LIST OF AVAILABLE SOURCE /UUENCODED BINARIES
- PSEND NAME - SEND UUENCODED BINARY.
-
- ├OMMANDS NO LONGER SUPPORTED:
-
- STATUS - RETURNS THE CURRENT COMMANDS (THIS LIST)
- (USE THE HELP FILE)
-
- ╨LEASE NOTE THAT THE MAILSERVER IS ONLY RUN AT 2:00 ┴═ ┼╙╘.
-
- ├ATALOG ╠IST - ╠AST UPDATE ╞EBRUARY 27, 1993.
-
- ISS1. - ├= ╚ACKING, ╔SSUE #1
- ISS2. - ├= ╚ACKING, ╔SSUE #2
- ISS3. - ├= ╚ACKING, ╔SSUE #3
- ISS4. - ├= ╚ACKING, ╔SSUE #4
- ISS5. - ├= ╚ACKING, ╔SSUE #5
- CONTENTS.LIS - ├ONTENT ╠ISTING OF ╔SSUES #1-4
- MAILSERV.012493 - ╓┴╪/─├╠ ═AILSERVER .SHARE FILE
-
- *INVASION1.SFX - ╙PACE ╔NVASION ╙OURCE (╙TARTING WITH ╔SSUE 4)
- *BMOVER.SFX - ╟EOS 128 ┬ANKING WITH ┬ANKS 2F3 (╔SSUE #2)
- *VDC-BG.SFX - ╒SE OF 64╦ ╓─├ ╥┴═ IN ╟EOS (╔SSUE #3)
- *C64.ZIP - ├64 ┼MULATOR FOR ╔┬═
- *LRR.SFX - ╠ITTLE ╥ED ╥EADER (FROM ├= ╚ACKING #4)
-
- -- ╘EMPORARY ╞ILES -> ╧R FILES THAT WILL BE DELETED AS NEEDED FOR SPACE
-
- *ZEDV075.SFX - ┌ED-128 ╘EXT ┼DITOR
- *RAMDOSII.SFX - ╥┼╒ ─OS FOR THE ├=128 ┴LLOWS > 512K ╥┼╒.
-
- ╬╧╘┼: ╞ILES MARKED WITH "*" SHOULD BE REQUESTED VIA ╨╙┼╬─ - THEY WILL BE
- SENT TO YOU IN UUENCODED FORM. ╘HEY MAY _NOT_ BE REQUESTED VIA ╙┼╬─.
-
- =============================================================================
- ╘HE ─EMO ├ORNER: ╙TRETCHING ╙PRITES
- BY ╨ASI '┴LBERT' ╧JALA (PO87553@CS.TUT.FI)
- ╫RITTEN: 16-═AY-91 ╘RANSLATION/╥EVISION 01-╩UN-92, ─EC-92
-
- (┴LL TIMINGS ARE IN ╨┴╠, PRINCIPLES WILL APPLY TO ╬╘╙├ TOO)
-
- ┘OU MIGHT HAVE HEARD THAT IT IS POSSIBLE TO EXPAND SPRITES TO MORE THAN
- TWICE THEIR ORIGINAL SIZE. ╔MAGINE A SPRITE SCROLLER WITH 6-TIMES EXPANDED
- SPRITES. ╚OWEVER, THERE IS NO NEED TO EXPAND ALL OF THEM EQUALLY. ╒SING
- THIS TECHNIQUE, IT IS POSSIBLE TO MAKE EASY SINUS EFFECTS AND CONSTANTLY
- EXPANDING AND SHRINKING LETTERS.
-
- ╘HE ╓╔├ (VIDEO INTERFACE CONTROLLER) MAY BE FOOLED IN MANY THINGS. ╧NE OF
- THEM IS THE VERTICAL EXPANSION OF SPRITES. ╔F YOU CLEAR THE EXPAND FLAG AND
- THEN SET IT BACK STRAIGHT AWAY, ╓╔├ WILL THINK IT HAS ONLY DISPLAYED THE
- FIRST ONE OF THE EXPANDED LINES. ╔F WE DO THE TRICK AGAIN, ╓╔├ WILL CONTINUE
- TO DISPLAY THE SAME DATA AGAIN AND AGAIN. ┬UT WHY DOES ╓╔├ BEHAVE LIKE THIS ?
-
-
- _╠OGIC GATES WILL TELL THE TRUTH_
-
- ╔T IS NOT REALLY A BUG, BUT A FEATURE. ╘HE HARDWARE DESIGN TO IMPLEMENT THE
- VERTICAL ENLARGEMENT WAS JUST AS SIMPLE AS POSSIBLE. ╘HOSE, WHO DO NOT CARE
- ABOUT HARDWARE SHOULD SKIP THIS PART... ╘HE WHOLE Y-ENLARGEMENT IS HANDLED
- WITH FIVE SIMPLE LOGICAL PORTS. ┼ACH SPRITE HAS AN ASSOCIATED ╙ET-╥ESET
- FLIP-FLOP TO TELL WHETHER TO JUMP TO THE NEXT SPRITE LINE (ADD THREE BYTES
- TO THE DATA COUNTER) OR NOT.
-
- ╠ET'S CALL THE STATE OF THE FLIP-FLOP ╤ AND THE INPUTS ╥ (RESET) AND ╙ (SET).
- ╘HE FUNCTION OF A ╙╥ FLIP-FLOP IS QUITE SIMPLE: IF ╥ IS ONE, ╤ GOES TO ZERO,
- IF ╙ IS ONE, ╤ GOES TO ONE. ╧THERWISE THE STATE OF THE FLIP-FLOP DOES NOT
- CHANGE. ╔N THIS CASE THE FLIP-FLOP IS ╙ET, IF EITHER THE ┘-ENLARGEMENT BIT
- IS ZERO OR THE STATE OF THE FLIP-FLOP IS ZERO AT THE END OF A SCAN LINE. ╘HE
- FLIP-FLOP IS RESET, IF BOTH THE STATE AND THE ┘-ENLARGEMENT ARE ONES AT THE
- END OF THE LINE.
-
- ╫HEN YOU CLEAR THE BIT IN THE VERTICAL EXPANSION REGISTER, THE FLIP-FLOP WILL
- BE SET REGARDLESS OF THE ELECTRON BEAM POSITION ON THE SCAN LINE. ╔F YOU
- SET THE BIT AGAIN BEFORE THE END OF THE LINE, THE FLIP-FLOP WILL BE CLEARED
- AND ╓╔├ WILL BE DISPLAYING THE SAME SPRITE LINE AGAIN. ╔N OTHER WORDS, ╓╔├
- WILL THINK THAT IT IS STARTING TO DISPLAY THE SECOND LINE OF THE EXPANDED
- SPRITE ROW. ╘HIS WAY ANY OF THE LINES IN ANY OF THE SPRITES MAY BE STRETCHED
- AS WANTED.
-
- .---- ├URRENT FLIPFLOP STATE (IF ONE, ENABLES ADD TO SPRITE POINTER)
- | .---- ┘-EXPANSION BIT.
- | | .--- ┼ND OF LINE PULSE (BRIEFLY ONE AT END OF LINE)
- | | | .--- ╬EXT STATE (╫HAT STATE WILL BECOME UNDER THESE CONDITIONS)
- | | | |
- 0 0 0 1
- 0 0 1 1
- 0 1 0 NO CHANGE
- 0 1 1 1
- 1 0 0 1 ├LEAR $─017 -> FLIP-FLOP IS SET
- 1 0 1 1
- 1 1 0 NO CHANGE ╙ET $─017 -> FLIP-FLOP RESETS AT THE END OF LINE
- 1 1 1 0
-
- ╙O, SIMPLY, AT ANY TIME, IF VERTICAL EXPAND IS ZERO, THE ADD ENABLE IS SET
- TO ONE. ┴T THE END OF THE LINE - BEFORE ADDING - THE STATE IS CLEARED IF
- VERTICAL EXPAND IS ONE.
-
-
- _┼VEN ODDER ?_
-
- ╙OMETHING VERY WEIRD HAPPENS WHEN WE CLEAR THE EXPANSION BIT RIGHT WHEN ╓╔├
- IS ADDING THREE TO THE SPRITE IMAGE COUNTERS. ╘HE VALUES IN THE COUNTERS WILL
- BE INCREASED ONLY BY TWO, AND THE DATA IS THEN READ FROM THE WRONG PLACE.
-
- ╬ORMALLY THE DISPLAY OF A SPRITE ENDS WHEN ╓╔├ HAS SHOWN ALL OF THE 21
- LINES OF THE SPRITE (THE COUNTER WILL END UP TO $3F). ╔F THERE HAS BEEN A
- COUNTER MIXUP, $3F IS NOT REACHED AFTER 21 LINES AND ╓╔├ WILL GO ON COUNTING
- AND WILL DISPLAY THE SPRITE AGAIN, NOW NORMALLY. ╔F WE FOOL THE COUNTER ONLY
- ONCE, THE COUNTER VALUE $3F IS REACHED WHEN THE SPRITE IS DISPLAYED TWICE.
-
-
- _╞IDDLING_
-
- ╔ DON'T THINK THE DISTORTED COUNTER EFFECT CAN BE USED FOR ANYTHING, BUT
- THERE IS MANY THINGS WHERE THE VARIABLE STRETCHING COULD BE USED. ╫HEN YOU
- OPEN THE BORDERS, YOU CAN BE SURE THAT THERE IS A CONSTANT AMOUNT OF TIME,
- IF YOU STRETCH THE SPRITES TO THE WHOLE LENGHT OF THE AREA. ┘OU MAY STRETCH
- ONLY THE FIRST AND LAST LINES, STRETCH THE OTHER LINES BY A CONSTANT OR
- USING A TABLE, OR USING A VARIABLE TABLE OR ANY OF THE COMBINATIONS POSSIBLE.
-
-
- _┴ RASTER ROUTINE IS A MUST_
-
- ┬ECAUSE YOU HAVE TO ACCESS THE ╓╔├ REGISTERS ON EACH LINE DURING THE STRETCH,
- YOU NEED SOME KIND OF ROUTINE WHICH CAN DO OTHER KINDS OF TRICKS BESIDES THE
- STRETCH. ┘OU CAN OPEN THE SIDE BORDERS AND CHANGE THE BACKGROUND COLOR AND
- MAYBE YOU HAVE TO SHIFT THE SCREEN (AND THE BAD LINES WITH IT) DOWNWARDS.
- [╙EE PREVIOUS ├=╚ACKING ╔SSUES FOR TALK ABOUT RASTER INTERRUPTS.]
-
- ╠OOK AT THE DEMO PROGRAM. ╔N THE BEGINNING OF THE RASTER ROUTINE THERE IS
- FIRST SOME TIMING, THEN A LOOP THAT LASTS EXACTLY 46 CLOCK CYCLES. ╔T TAKES
- EXACTLY ONE SCAN LINE TO EXECUTE. ╔NSIDE THE LOOP WE FIRST DO THE NECASSARY
- MODIFICATIONS TO THE VERTICAL SCROLL REGISTER, THEN WE CHANGE THE BACKGROUND
- COLOR AND THEN WE OPEN THE SIDE BORDERS. ┴ND FINALLY WE HANDLE THE STRETCHING
- USING THE STRETCH DATA, WHERE A ZERO-BIT MEANS THAT THE CORRESPONDING SPRITE
- WILL BE STRETCHED. ┴ ONE-BIT MEANS THAT ╓╔├ IS ALLOWED TO GO TO THE NEXT LINE
- OF THE SPRITE DATA.
-
-
- _╙TRETCHING TAKES TIME_
-
- ┬ESIDES SHOWING THE STRETCHED SPRITES WE NEED TIME TO GENERATE THE STRETCHING
- DATA, UNLESS OF COURSE, THE STRETCH IS CONSTANT. ╫E HAVE TO HAVE 20
- ONE-BITS FOR EACH SPRITE IN OUR TABLE. ╔T IS NOT FEASIBLE TO DETERMINE THE
- STATE OF EACH BYTE IN THE TABLE, INSTEAD YOU CLEAR THE TABLE AND PLOT THE
- NEEDED BITS.
-
- ╘HE ROUTINE IS QUITE STRAIGHTFORWARD, BUT MANY OPTIMIZATIONS MAY BE APPLIED
- TO MAKE IT FASTER. ╞IRST WE LOAD ┘ WITH THE STRETCH OF THE FIRST LINE (THE
- Y-COORDINATE OF THE DATA). ╘HEN WE USE IT AS AN INDEX TO THE TABLE AND PLOT
- THE RIGHT BIT AND INCREASE ┘ WITH THE EXPANSION VALUE. ╘HEN WE DO IT AGAIN
- UNTIL WE HAVE ALL OF THE 20 BITS SCATTERED TO THE TABLE. ╘HE LAST SPRITE LINE
- WILL THEN STRETCH UNTIL WE STOP THE STRETCHING, BECAUSE THE LAST LINE IS
- NOT ALLOWED TO BE DRAWN.
-
-
- _╙PEED IS EVERYTHING_
-
- ╘HE CALCULATION ITSELF IS EASY, BUT OPTIMIZING THE ROUTINE IS NOT. ╔F ALL
- OF THE SPRITES ARE STRETCHED EQUALLY (BY INTEGER AMOUNTS) AND FROM THE SAME
- POSITION, THE ROUTINE IS THE FASTEST POSSIBLE. ┘OU CAN ALSO HAVE VARIABLE
- AND SMOOTH STRETCH. ╙MOOTH STRETCH USES OTHER THAN INTEGER EXPANSION VALUES
- AND THUS ALSO NEEDS MORE PROCESSOR TIME. ╔F EACH SPRITE HAS TO BE STRETCHED
- INDIVIDUALLY, YOU NEED MUCH MORE TIME TO DO IT.
-
- ╘HE FASTEST ROUTINE ╔ HAVE EVER WRITTEN USES SOME SERIOUS SELFMODIFICATION
- TRICKS. ╘HERE ARE ALSO SOME OTHER TRICKS TO SPEED UP THE STRETCH, BUT THEY
- ARE ALL SECRET ONES.. :-) ╫ELL, WHAT THE H*CK, ╔ WILL INCLUDE IT ANYWAY.
- ┬Y THE TIME YOU READ THIS ╔ HAVE ALREADY MADE A FASTER ROUTINE..
-
- ┘OU CAN SPEED UP THAT ROUTINE (BY 17%) BY UNROLLING THE INNER LOOP, BUT YOU
- HAVE TO USE A DIFFERENT ADDRESSING MODE FOR ╧╥┴ (ZERO-PAGE). ┘OU ALSO NEED
- TO PLACE SOME RESTRICTIONS TO THE TABLES USED.. ╔F YOU UNROLL BOTH LOOPS,
- YOU CAN GET ~25% FASTER ROUTINE THAN THE ╞ORE!-VERSION.
-
-
- _─EMO PROGRAM_
-
- ╔ TRIED TO COLLECT ALL OF THE MAIN PRINCIPLES OF STRETCHING AND RASTER
- ROUTINES TO THE DEMO PROGRAM. ╔ USE THE TERM "RASTER ROUTINE" WHEN THE
- EXECUTION IS TIGHTLY SYNCHRONIZED TO THE ELECTRON BEAM AND TO THE SCREEN
- DISPLAY. ╘HE PROGRAM MAY BE UNCLEAR IN PLACES, BUT ╔ WANTED TO KEEP IT AS
- SHORT AS POSSIBLE. ╘HE ROUTINE OPENS THE SIDE BORDERS, SCROLLS THE SCREEN
- VERTICALLY, CHANGES THE BACKGROUND COLOR AND STRETCHES THE SPRITES.
-
- ╘HE STRETCHER ROUTINE ALLOWS DIFFERENT Y-POSITION AND AMOUNT OF EXPANSION
- FOR EACH SPRITE. ╘HIS ROUTINE USES 1/8 FRACTIONS TO DO THE COUNTING, AND SO
- IT IS MUCH TOO SLOW TO USE IN A REAL DEMO. ╓╔├ REGISTERS ARE INITIALIZED
- FROM A TABLE, INSTEAD OF SETTING THEM SEPARATELY. ╔NTERRUPT POSITION IS ONE
- LINE ABOVE THE SPRITES. ╘HE PROGRAM DOES NOT OPEN THE TOP OR BOTTOM BORDERS.
- (╔ USUALLY USE A ╬═╔ TO OPEN THE VERTICAL BORDERS, SO THAT ╔ ONLY NEED TO
- USE ONE RASTER-╔╥╤ POSITION.)
-
- ╔ TRIED TO MAKE A ╬╘╙├ VERSION, BUT ╔ COULDN'T GET IT TO SYNCHRONIZE.
- ╘HERE ARE ALSO LESS CYCLES AVAILABLE SO YOU CAN'T STRETCH ALL OF THE SPRITES
- INDIVIDUALLY IN ╬╘╙├ (WITH THIS ROUTINE THAT IS..).
-
- --------------------------------------------------------------------------
- ╞AST-STRETCH FROM ═EGADEMO92 (PART: ╞ORE!)
-
- ╙╔╬╨╧╙ ╙TRETCH SINUS INDEX
- ╙╔╬╙╨┼┼─ ╙TRETCH SINUS INDEX SPEED
- ┘╙╔╬╨╧╙ ┘-SINUS INDEX
- ┘╙╔╬╙╨┼┼─ ┘-SINUS INDEX SPEED
- ═┴╙╦ ┬IT MASK FOR PASSESS (USUALLY $01,$02,$04,$08,$10..)
-
- ┘╙╔╬╒╙ ┘-SINUS TABLE
- ╙╘╥┼╘├╚ ╙PRITE LINE SIZES (╠╙┬ OF THE ADDRESS MUST BE 0)
- ╙╔┌┼╘ ╙PRITE SIZE/2 TABLE (╠╙┬ OF THE ADDRESS MUST BE 0)
- ─┴╘┴ ╙TRETCH DATA TABLE (CLEARED BEFORE THIS ROUTINE)
-
- [XX] MARKS SELFMODIFICATION. ╞OR EXAMPLE LOOP COUNTER, BIT MASK AND
- INDEX TO THE STRETCH AND SIZE DATA TABLES ARE STORED STRAIGHT IN THE
- CODE.
-
- 0B90 LDA #$06 ; ╬UMBER OF SPRITES-1 (HERE ╔ USED ONLY 7 SPRITES)
- 0B92 STA $0B96
- 0B95 LDX #$[FF] ; ╠OAD COUNTER
- 0B97 CLC ; ├LEAR CARRY FOR ADC
- 0B98 LDA ╙╔╬╨╧╙,X ; ╙TRETCH SINUS POSITION
- 0B9B STA $0BD1 ; ╙ET LOW BYTES OF INDICES
- 0B9E STA $0BB8
- 0BA1 ADC ╙╔╬╙╨┼┼─,X ; ┴DD STRETCH SINUS SPEED (CARRY IS NOT SET)
- 0BA4 AND #$7F ; ╘ABLE IS 128 BYTES (TWICE)
- 0BA6 STA ╙╔╬╨╧╙,X ; ╙AVE NEW SINUS POSITION
- 0BA9 LDA ┘╙╔╬╨╧╙,X ; ╟ET THE ┘ SINUS POSITION
- 0BAC ADC ┘╙╔╬╙╨┼┼─,X ; ┴DD ┘ SINUS SPEED
- 0BAF STA ┘╙╔╬╨╧╙,X ; ╙AVE NEW ┘ SINUS POSITION
- 0BB2 TAY ; ╨OSITION TO INDEX REGISTER
- 0BB3 LDA ┘╙╔╬╒╙,Y ; ╟ET ┘-POSITION FROM TABLE (CAN BE 256 BYTES LONG)
- 0BB6 SEC ; ADC EITHER SETS OR CLEARS CARRY, WE HAVE TO SET IT
- 0BB7 SBC ╙╔┌┼╘[1E] ; ╙UBTRACT SIZE OF THE SPRITE/2 TO GET THE SPRITE
- 0BBA CLC ; TO STRETCH FROM THE MIDDLE.
- 0BBB TAY ; ═AX╙IZE/2 < ┘-SINUS < ┴REA╚EIGHT-═AX╙IZE/2
- 0BBC LDA ═┴╙╦,X ; ╟ET THE ORA-MASK FOR THIS PASS
- 0BBF STA $0BCB ; ╙TORE MASK
- 0BC2 STA $0BDB
- 0BC5 LDX #$13 ; 19 LINES HERE + 1 AFTER
- 0BC7 LDA ─┴╘┴,Y ; ╠OAD & ORA-MASK & STORE
- 0BCA ORA #[$01]
- 0BCC STA ─┴╘┴,Y
- 0BCF TYA
- 0BD0 ADC ╙╘╥┼╘├╚[1E],X ; ┴DD THE STRETCH FROM THE TABLE (CARRY IS NOT SET)
- 0BD3 TAY
- 0BD4 DEX ; DECREASE COUNTER
- 0BD5 BNE $0BC7 ; ─O THE 19 LINES
- 0BD7 LDA ─┴╘┴,Y ; ╠OAD & ORA-MASK & STORE THE 20TH LINE
- 0BDA ORA #[$01]
- 0BDC STA ─┴╘┴,Y
- 0BDF DEC $0B96 ; ╬EXT SPRITE(S)
- 0BE2 BPL $0B95
- 0BE4 RTS
-
- ╘IMINGS:
- -------
- CLEAR 128 BYTES: 514 + 12 CYCLES 8.16 LINES
- 7 PASSES : 3820 + 12 CYCLES 60.6 LINES = 8.66 LINES/PASS
-
- ╘HE UNROLLED CLEAR ROUTINE CONSISTS OF ONE LOAD (LDA #$00) AND 128
- STORE INSTRUCTIONS (STA $NNNN). 12 CYCLES ARE COUNTED FOR ╩╙╥/╥╘╙.
-
- ╙TRETCHING OF 8 SPRITES WOULD TAKE SLIGHTLY LESS THAN 80 LINES, WHICH IS ONE
- FOURTH OF THE TOTAL RASTER TIME. ─ISPLAYING A 128-LINE HIGH STRETCHER TAKES
- ABOUT 130 LINES (COUNTING SPRITE SETUP AND SYNCHRONIZATION), SCROLLER COUPLE
- OF LINES MORE. ╘OTAL 212 LINES LEAVES 100 LINES (6300 CYCLES) FREE FOR OTHER
- ACTIVITIES IN A ╨┴╠ SYSTEM. ╔N A ╬╘╙├ SYSTEM YOU WOULD HAVE ONLY 50 LINES
- LEFT.
-
-
- ┴ SIMPLE BASIC ROUTINE TO CREATE THE STRETCH DATA:
- -------------------------------------------------
- A=0:FOR F=0 TO 127:A=A+╚EIGHT*(2+SIN(F*╨╔/64)):POKE ╘ABLE+F,A:
- POKE ╘ABLE+F+128,A:A=A-INT(A):NEXT F
-
- ╘HIS WILL ALSO HANDLE THE 'ROUNDING'. ┬ECAUSE OF THIS WE DON'T HAVE TO
- HANDLE FRACTIONS IN THE STRETCHER ROUTINE. ╘HE USE OF A TABLE ALSO GIVES THE
- OPPORTUNITY TO HAVE A SEPARATE SIZE FOR EACH SPRITE LINE. ╘HE TABLE DOES
- NOT NEED TO BE A SINUS, IT COULD HAVE TRIANGLE OR ANY OTHER 'WAVEFORM' AS
- LONG AS THE MINIMUM VALUE IN THE TABLE (SPRITE LINE SIZE) IS 1.
-
-
- ┴ BASIC ROUTINE TO DO THE SIZE/2 TABLE:
- --------------------------------------
- A=0:FOR F=0 TO 19:A=A+PEEK(╘ABLE+F):NEXT F: REM GET THE SIZE IN POSITION 0
- FOR F=0 TO 127:POKE ╙╘ABLE+F,A/2:A=A-PEEK(╘ABLE+F)+PEEK(╘ABLE+F+20):NEXT F
-
- --------------------------------------------------------------------------
- _╙TRETCHER PROGRAM_
-
- ┘╙├╥╧╠╠= $├╞00 ; ╓ERTICAL SCROLL TABLE (MOVES BAD LINES)
- ╙╘╥┼╘├╚= $├╞80 ; ╙TRETCH TABLE
- ├╧╠╧╥╙= $├┼80 ; ╘ABLE FOR BACKGROUND COLORS
- ┘├╧╧╥─= $0380 ; ╙PRITE Y-POSITIONS (EIGHT BYTES)
- ╚┼╔╟╚╘= $0388 ; ╙PRITE STRETCHES (EIGHT BYTES)
- ┘╨╧╙= 52 ; ╙PRITE Y-COORDINATE
- ╙╨╥├╧╠= 2 ; ╙PRITE COLORS
-
-
- *= $├000
-
- ╙┼╔ ; ─ISABLE INTERRUPTS
- ╠─┴ #$7╞
- ╙╘┴ $─├0─ ; ─ISABLE TIMER INTERRUPTS
- ╠─┴ #<╔╥╤ ; ╧UR OWN INTERRUPT HANDLER
- ╙╘┴ $0314
- ╠─┴ #>╔╥╤
- ╙╘┴ $0315
- ╠─╪ #$3┼ ; ╫E CREATE A SPRITE TO CASSETTE BUFFER
- ╠╧╧╨ ╠─┴ ╙╨╥╔╘┼,╪
- ╙╘┴ $0340,╪
- ─┼╪
- ┬╨╠ ╠╧╧╨
- ╠─╪ #7
- ╠╧╧╨2 ╠─┴ #$─ ; ╙ET THE SPRITE IMAGE POINTERS
- ╙╘┴ $07╞8,╪
- ╠─┴ #╙╨╥├╧╠ ; ╙ET SPRITE COLORS
- ╙╘┴ $─027,╪
- ─┼╪
- ┬╨╠ ╠╧╧╨2
- ╠─╪ #$26
- ╠╧╧╨3 ╠─┴ ╓╔─┼╧,╪ ; ╔NIT ╓╔├
- ╙╘┴ $─000,╪
- ─┼╪
- ┬╨╠ ╠╧╧╨3
- ╠─╪ #$7╞ ; ├REATE THE Y-SCROLL TABLE
- ╠╧╧╨4 ╘╪┴ ; AND CLEAR THE COLOR TABLE
- ┴╬─ #$07
- ╧╥┴ #$10 ; ╬ON-BLANK SCREEN
- ╙╘┴ ┘╙├╥╧╠╠,╪
- ╠─┴ #$00
- ╙╘┴ ├╧╠╧╥╙,╪
- ─┼╪
- ┬╨╠ ╠╧╧╨4
- ╙╘┴ $3╞╞╞
- ╠─╪ #23 ; ├REATE A COLOR TABLE
- ╠╧╧╨5 ╠─┴ ┬┴├╦,╪
- ╙╘┴ ├╧╠╧╥╙+8,╪
- ╙╘┴ ├╧╠╧╥╙+32,╪
- ╙╘┴ ├╧╠╧╥╙+56,╪
- ╙╘┴ ├╧╠╧╥╙+80,╪
- ╙╘┴ ├╧╠╧╥╙+96,╪
- ─┼╪
- ┬╨╠ ╠╧╧╨5
- ╩╙╥ ├╚┴╬╟┼ ; ╔NIT SPRITE SIZES AND Y-POSITIONS
- ├╠╔ ; ┼NABLE INTERRUPTS
- ╥╘╙
-
- ╔╥╤ ╠─╪ #$01
- ╠─┘ #$08 ; 'NORMAL' $─016
- ╬╧╨ ; ╘IMING
- ╬╧╨
- ╬╧╨
- ┬╔╘ $┼┴ ; (┴DD ╬╧╨'S ETC. FOR ╬╘╙├)
- ╠╧╧╨6 ╠─┴ ┘╙├╥╧╠╠-1,╪ ; ═OVE THE SCREEN (BAD LINES) 5
- ╙╘┴ $─011 4
- ╠─┴ ├╧╠╧╥╙,╪ ; ╠OAD THE BACKGROUND COLOR 4
- ─┼├ $─016 ; ╧PEN THE BORDER 6
- ╙╘┴ $─021 ; ╙ET THE BACKGROUND COLOR 4
- ╙╘┘ $─016 ; ╙CREEN TO NORMAL 4
- ╠─┴ ╙╘╥┼╘├╚,╪ ; ╙TRETCH THE SPRITES 4
- ╙╘┴ $─017 4
- ┼╧╥ #$╞╞ 2
- ╙╘┴ $─017 4
- ; (┴DD ╬╧╨ FOR ╬╘╙├ +2)
- ╔╬╪ ; ╔NCREASE COUNTER 2
- ┬╨╠ ╠╧╧╨6 ; ╠OOP 127 TIMES + 3
- ---
- ╠─┴ #1 ; ┴CK THE RASTER INTERRUPT =46
- ╙╘┴ $─019 +17(SPRITES)
- ---
- ╩╙╥ ─╧╙╘╥┼╘├╚ ; ╬EW STRETCH =63(WHOLE)
-
- ╩═╨ $┼┴31
-
- ╙╨╥╔╘┼ ┬┘╘ 0,0,0,3,$╞┬,0,7,$7┼ ; ┴N ┼XAMPLE SPRITE
- ┬┘╘ 0,$35,$─╞,0,$1─,$77,0,$┬7
- ┬┘╘ $5─,0,$┬─,$83,$7┼,$┼╞,1,$─┼
- ┬┘╘ $┬┬,1,$78,$┴┼,3,$70,$┼┬,0
- ┬┘╘ 0,$┬┴,3,$60,$┼┼,3,$─8,$╞┬
- ┬┘╘ 2,$╞6,$╞┼,$83,$┬─,$9╞,$┬┴,0
- ┬┘╘ $37,$┼┼,0,$3─,$╞┬,0,7,$7┼
- ┬┘╘ 0,3,$─╞,0,0,0,0
-
- ╓╔─┼╧ ┬┘╘ $┼8,┘╨╧╙,$20,┘╨╧╙,$50,┘╨╧╙,$80,┘╨╧╙,$┬0,┘╨╧╙
- ┬┘╘ $┼0,┘╨╧╙,$10.┘╨╧╙,$40,┘╨╧╙,$├1,$18,┘╨╧╙-1,0,0
- ┬┘╘ $╞╞,8,$╞╞,$15,1,1,$╞╞,$╞╞,$╞╞,0,0,0,0,0,0,0,1,10
- ; ╔NIT VALUES FOR ╓╔├ - SPRITES, INTERRUPTS, COLORS
-
- ┬┴├╦ ┬┘╘ 0,$┬,$├,$╞,1,$╞,$├,$┬ ; ┼XAMPLE COLOR BARS
- ┬┘╘ 0,6,$┼,$─,1,$─,$┼,6
- ┬┘╘ 0,9,2,$┴,1,$┴,2,9
-
- ─╧╙╘╥┼╘├╚
- ╠─╪ #31 ; ├LEAR THE TABLE
- ╠─┴ #0 ; (╒NROLLING WILL HELP THE SPEED,
- ╠╧╧╨7 ╙╘┴ ╙╘╥┼╘├╚,╪ ; BECAUSE ╙╘┴ NNNN,╪ IS 5 CYCLES
- ╙╘┴ ╙╘╥┼╘├╚+32,╪ ; AND ╙╘┴ NNNX IS ONLY 4 CYCLES.)
- ╙╘┴ ╙╘╥┼╘├╚+64,╪
- ╙╘┴ ╙╘╥┼╘├╚+96,╪
- ─┼╪
- ┬╨╠ ╠╧╧╨7
- ╙╘┴ ╥┼═┴╔╬─+1 ; ├LEAR THE REMAINDER
- ╠─┴ #7
- ╙╘┴ ├╧╒╬╘┼╥+1 ; ╔NIT COUNTER FOR 8 LOOPS
- ╠─┴ #$80
- ╙╘┴ ═┴╙╦+1 ; ╞IRST SPRITE 7, MASK IS $80
- ├╧╒╬╘┼╥ ╠─╪ #$00 ; ╘HE ARGUMENT IS THE COUNTER
- ╠─┘ ┘├╧╧╥─,╪ ; Y-POSITION
- ╠─┴ ╚┼╔╟╚╘,╪ ; ╚EIGHT OF ONE LINE (5 BIT INTEGER PART)
- ╙╘┴ ┴──+1
- ╠─╪ #20 ; ╚ANDLE 20 LINES
- ╠╧╧╨8 ╠─┴ ╙╘╥┼╘├╚+2,┘
- ═┴╙╦ ╧╥┴ #$00
- ╙╘┴ ╙╘╥┼╘├╚+2,┘ ; ╙ET A ONE-BIT
- ╙╘┘ ┘┴──+1
- ╥┼═┴╔╬─ ╠─┴ #0
- ┴╬─ #7 ; ╨REVIOUS REMAINDER
- ┴── ┴─├ #0 ; ADD TO THE HEIGHT
- ╙╘┴ ╥┼═┴╔╬─+1 ; ╙AVE THE NEW VALUE
- ╠╙╥
- ╠╙╥
- ╠╙╥
- ├╠├ ; ╘AKE THE INTEGER PART
- ┘┴── ┴─├ #0
- ╘┴┘ ; ╬EW VALUE TO Y-REGISTER
- ─┼╪
- ┬╬┼ ╠╧╧╨8
- ╠╙╥ ═┴╙╦+1 ; ╒SE NEW MASK
- ─┼├ ├╧╒╬╘┼╥+1 ; ╬EXT SPRITE
- ┬╨╠ ├╧╒╬╘┼╥
-
- ├╚┴╬╟┼ ╠─┴ #$00
- ┴╙╠ ; ╙PRITE HEIGHT CHANGES WITH 2X SPEED
- ┴╬─ #$3╞
- ╘┴┘ ; 64 BYTES LONG TABLE
- ╔╬├ ├╚┴╬╟┼+1 ; ╔NCREASE THE COUNTER
- ╠─╪ #7 ; ─O EIGHT SPRITES
- ╠╧╧╨9 ╠─┴ ╙╔╬╒╙,┘
- ╠╙╥
- ╠╙╥
- ├╠├ ; ╒SE THE SAME SINUS AS Y-DATA
- ┴─├ #8
- ╙╘┴ ╚┼╔╟╚╘,╪ ; ╙PRITE HEIGHT WILL BE FROM 1 TO 3 LINES
- ╘┘┴
- ┴─├ #10 ; ╬EXT SPRITE ENLARGEMENT WILL BE 10 ENTRIES
- ┴╬─ #$3╞ ; FROM THIS
- ╘┴┘
- ─┼╪
- ┬╨╠ ╠╧╧╨9
- ╠─╪ #7
- ╠─┴ ├╚┴╬╟┼+1
- ┴╬─ #$3╞
- ╘┴┘
- ╠╧╧╨10 ╠─┴ ╙╔╬╒╙,┘ ; ┘-POSITION
- ╙╘┴ ┘├╧╧╥─,╪
- ╘┘┴
- ┴─├ #10 ; ╬EXT SPRITE POSITION IS 10 ENTRIES FROM THIS ONE
- ┴╬─ #$3╞
- ╘┴┘
- ─┼╪
- ┬╨╠ ╠╧╧╨10
- ╥╘╙
-
- ╙╔╬╒╙ ┬┘╘ $20,$23,$26,$29,$2├,$2╞,$31,$34 ; ┴ PART OF A SINUS TABLE
- ┬┘╘ $36,$38,$3┴,$3├,$3─,$3┼,$3╞,$3╞
- ┬┘╘ $3╞,$3╞,$3╞,$3┼,$3─,$3├,$3┴,$38
- ┬┘╘ $36,$34,$31,$2╞,$2├,$29,$26,$23
- ┬┘╘ $20,$1├,$19,$16,$13,$10,$┼,$┬
- ┬┘╘ 9,7,5,3,2,1,0,0,0,0,0,1,2,3,5,7
- ┬┘╘ 9,$┬,$┼,$10,$13,$16,$19,$1├
-
- --------------------------------------------------------------------------
- ╙TRETCHING SPRITES DEMO PROGRAM BASIC LOADER (╨┴╠)
-
- 1 ╙=49152
- 2 ─┼╞╞╬╚(├)=├-48+7*(├>64)
- 3 ├╚=0:╥┼┴─┴$,┴:╨╥╔╬╘┴$:╔╞┴$="┼╬─"╘╚┼╬╨╥╔╬╘"<CLR>":╙┘╙49152:┼╬─
- 4 ╞╧╥╞=0╘╧31:╤=╞╬╚(┴╙├(═╔─$(┴$,╞*2+1)))*16+╞╬╚(┴╙├(═╔─$(┴$,╞*2+2)))
- 5 ├╚=├╚+╤:╨╧╦┼╙,╤:╙=╙+1:╬┼╪╘:╔╞├╚=┴╘╚┼╬3
- 6 ╨╥╔╬╘"├╚┼├╦╙╒═ ┼╥╥╧╥":┼╬─
- 100 ─┴╘┴ 78┴9648─1403┴9├08─1503┴23┼┬─96├09─4003├┴10╞7┴207┴90─9─╞807┴9029─, 3614
- 101 ─┴╘┴ 27─0├┴10╞3┴226┬──5├09─00─0├┴10╞7┴27╞8┼0──├8┴290709109─00├╞┴9009─, 3897
- 102 ─┴╘┴ 80├┼├┴10╞08─╞╞3╞┴217┬─╞├├09─88├┼9─┴0├┼9─┬8├┼9──0├┼9─┼0├┼├┴10┼┬20, 5281
- 103 ─┴╘┴ 67├15860┴201┴008┼┴┼┴┼┴24┼┴┬─╞╞├┼8─11─0┬─80├┼├┼16─08─21─08├16─0┬─, 4699
- 104 ─┴╘┴ 80├╞8─17─049╞╞8─17─0┼810┼0┼┼19─02014├14├31┼┴00000003╞┬00077┼0035, 3394
- 105 ─┴╘┴ ─╞001─7700┬75─00┬─837┼┼╞01─┼┬┬0178┴┼0370┼┬0000┬┴0360┼┼03─8╞┬02╞6, 3628
- 106 ─┴╘┴ ╞┼83┬─9╞┬┴0037┼┼003─╞┬00077┼0003─╞00000000┼834203450348034┬034┼0, 3015
- 107 ─┴╘┴ 3410344034├118330000╞╞08╞╞150101╞╞╞╞╞╞00000000000000010┴000┬0├0╞, 1859
- 108 ─┴╘┴ 010╞0├0┬00060┼0─010─0┼060009020┴010┴0209┴21╞┴9009─80├╞9─┴0├╞9─├0, 1876
- 109 ─┴╘┴ ├╞9─┼0├╞├┴10╞18─4─├1┴9078─35├1┴9808─45├1┴200┬├8003┬─88038─51├1┴2, 4314
- 110 ─┴╘┴ 14┬982├╞09009982├╞8├5┴├1┴900290769008─4─├14┴4┴4┴186900┴8├┴─0┼24┼, 3430
- 111 ─┴╘┴ 45├1├┼35├110├─┴9000┴293╞┴8┼┼68├1┴207┬99┼├14┴4┴1869089─880398690┴, 3474
- 112 ─┴╘┴ 293╞┴8├┴10┼├┴207┴─68├1293╞┴8┬99┼├19─800398690┴293╞┴8├┴10╞1602023, 3622
- 113 ─┴╘┴ 26292├2╞313436383┴3├3─3┼3╞3╞3╞3╞3╞3┼3─3├3┴383634312╞2├292623201├, 1654
- 114 ─┴╘┴ 191613100┼0┬09070503020100000000000102030507090┬0┼101316191├0000, 296
- 200 ─┴╘┴ ┼╬─,0
-
- --------------------------------------------------------------------------
- ╒UENCODED ├64 EXUTABLE FOR STRETCHING SPRITES (╨┴╠)
-
- BEGIN 644 STRETCH.64
- ═`0@-"`$`4[(╘.3$╒,@`╞"`(`┼╩5(*$,╔╠─.╦-#┬╩-┌╨╚0[$╓-"─`40@#`$-(?
- ═╠├`┌┴╘$─+$$┌╞4$─.╚═!)+(┬14┘$(╩>9(╔,┬.╔╪╘.3$╒,├╩``(@(!`"!1╦(╨/
- ═╔#,╤.┼&╥╔4@╚╤┬├**$$─+$:╠,╩╚╤*2─╔╦#$╓╩╩5(*,8╚╥┬┴!)"╤&╦#*╩,┬─╔:
- ═*0"╔"`4`0╘┬╥0╘┬╩43╩74╥╤1.┼.╥4┌╚╤.╚(┌┬╘-(╠─&╟,╨#!"`8`╞2)#2$5#╞
- ═2╒-532!%4┼)/4┬(┌@``."60`@╥`╫.$$┘-├0╪1#$╘,#-!.4,╨.$0╤-3`╙03(╙3
- ═14)$.39#,#┼$-#`╨,╘-!,3!&-╘$╥,#=!.3!$.41&.#`╫03─╨,├┼$+"`╙-├$╘╨
- ═`%╠)90"#(#(╫1#!#03$╨1├-!,├(╓0─1$-4,╨.40╨,$0╨0╘$╤,$8╫03(╫1├┴%4
- ═,$1$0╙┴!,├─╨-╙`┘,3`┘1#`╨0╘9!.3`╨.40╠(#,╪.3<`╩`┼╞`(,@.#!#14-!┬
- ═,3!&,#┴$1─8╙1─$╥,3="1$9#0╙`┘1#@╪0╘4┘1$$╨0╘4┘1$(╪0╘4┘1$0╨0╘4┘1
- ═1$4╨0╘5#03$╨14(╥,"╨@-3(╪,0#╒"6<`@╥`╓-╘,╤-3@╓,$$╥,#%!,#`╪14%%?
- ═045!,├1%04)$1─9#13┴$,3%$,$)$.#!#14-%,39$,#┴$,├%$,#┴#,39$,$)$╟
- ═+"`╘-├─┘`$(*:`"#(#@╨0╘8╪1#$╫1#`╘.49&.$0╤-╘0╨13@╤,$4╨144╤.40╨4
- ═,├`╤-$,╤-$,╙,45!,#`╨,#`╨,#-&0├`╨,#<╫13`╨,╙4╠(#,╙.30`├╨╔╔`(,@╓
- ═1$8╨,#%$-╙<╨,$(╫-40╨,$)$.#,╫145&,#%$14)",#$╫.$%%,#,╫,$5",#`╨<
- ═,$)!,#,╓,$5%,#-$.$9",#)&-┬╨@,╙8╥.`#<"╞╚`@╥!&13@╙0─0┘1─)!,#`╙╬
- ═-╘5%,#`╙1$9",#`╨-╙=%,#`╨,╘1&,#`╨,#`╨,#!%.#,╘,├`╙-#4╨,╙0╪,#,╘╪
- ═0├`╙-$4╨+"`╙,#$╒`"─+:╨"#(#,╘,3`╙-#0╨,╙1#,3$╪,╙,╨,#`╨1─8╨.$9&┬
- ═,34╨,3`╤1─9&1─9&,#`╨,#`╨,#`╨,#`╨,#`╨,3!!,#`╨0├!#,$8╠(#$╪-3─`<
- ═=@═╠`(,@,#$╨1├!#,$(╨,#`╓,$4╨1#`╤,$0╨13`╓,#`╨.3`╥,$$╨,3!!,#(╨╦
- ═.4$╥,49!.3`╨.40╪,$-&.41!,$-&.41#,"╨@,3@╫-@##"╓╘`@╥!#1├┼$13!#0
- ═1─-!,3!&,3┴$-$1#,4$┘,#<╪1#,╒0╙%!.3@╨.$0╘-4,╤03(╨,$)#.#`╨,╘)$╟
- ═.#@╨,╙┴$-3%#,4$╥+"`╘,╙$╘`!`,;@"#(#$╘0├─╪,─-&,#─╨,#─┘.#)#1├┴#=
- ═-4%#,4$┘,#`╥.3`╫-├─╨,#┴$-$1#,31!-$$╘03$╪-├─╨,$$╪0╘%$,$4╥-$4╠╤
- ═(#,╘,╙``70╤╧`(,@-#5#,4-%,╙5#,3$╨0╘1!.3`╨,$$╥.3-&03┴%138╪0╙%!├
- ═,├`╫0├─┘14,╤-$$╘03$╪-├─╨.#┼$.#@╨,╙─╪-├─╨02╨@,╙0╫-`"╩#'``@╥`╥╩
- ═.3-&03┴#03$╨14-!,├`╫040╓.$,╤,├─╙1─$╪0├─┘14,╤.40╪,#`╙.3@╓.3!!\
- ═,├─╙1─$╪0╘$╤,$8╤-├`╥,#(╙+"`╙-├(╥`/<,<0"#(#(╓,├─╥0╙)&,╙$╙-#,╓*
- ═,╙@╙03-#,╘0╙13-&,╘8╙1├-&,╘8╙13-$,╘,╙03,╪,╙8╙-#,╤,─8╥0╙(┘,├8╥+
- ═,╙(╨,4,╠(#$╓-30`0╨╒╥`(,@,3─╤-├$╙,3`╨13!",#─╨-╙`╒,#,╨,├`╤,#`╨╥
- ═,#`╨,#`╨,#`╤,#(╨,╙`╒,#<╨.3!",$4╤,#$╙,38╤.3%#,#`╨,"╨@,├─╓`$\-┼
- ,╥`"#($5.1"╨╨````>
- ``
- END
- SIZE 1362
-
- =============================================================================
- ╥OB ╚UBBARD'S ═USIC: ─ISASSEMBLED, ├OMMENTED AND ┼XPLAINED
- BY ┴NTHONY ═C╙WEENEY (U882859@POSTOFFICE.UTAS.EDU.AU)
-
- [┼D'S ╬OTE: ╔ QUESTIONED THIS ARTICLE CONCERNING COPYRIGHT PROBLEMS AND HE
- HAS ASSURED ME THAT IT IS LEGAL TO PRESENT IT IN ENTIRITY LIKE THIS AS IT IS
- PAST A CERTAIN # OF YEARS. ┴CCORDINGLY ╔'M PRESENTING IT AND ANY CONCERNS
- SHOULD BE TAKEN UP WITH HIM AND NOT MYSELF.]
-
- ╔NTRODUCTION:
- ************
-
- ╚OW DO YOU INTRODUCE SOMEONE LIKE ╥OB ╚UBBARD?? ╚E CAME, HE SAW AND HE
- CONQUERED THE '64 WORLD. ╔N MY ESTIMATION, THIS ONE MAN WAS RESPOSIBLE FOR
- SELLING MORE '64 SOFTWARE THAN ANY OTHER SINGLE PERSON. ╚ELL! ╔ THINK THAT ╥OB
- ╚UBBARD WAS RESPONSIBLE FOR SELLING MORE ├╧══╧─╧╥┼ 64'S THAN ANY OTHER PERSON!
- ╔ CERTAINLY BOUGHT MY '64 AFTER BEING BLOWN AWAY BY THE ═ONTY ON THE ╥UN MUSIC
- IN ─ECEMBER 1985. ╔N THE NEXT FEW YEARS, ╥OB WOULD TOTALLY DOMINATE THE '64
- MUSIC SCENE, RELEASING ONE HIT AFTER ANOTHER. ╔ WILL EVEN SAY THAT SOME REALLY
- TERRIBLE GAMES SOLD WELL ONLY ON THE STRENGTH OF THEIR BRILLIANT ╥OB ╚UBBARD
- MUSIC (EG. ╦NUCKLE┬USTERS AND ╫.┴.╥.).
-
- ╙O HOW DID ╥OB ACHIEVE THIS SUCCESS? ╞IRSTLY (OF COURSE) HE IS A SUPERB
- COMPOSER AND MUSICIAN, ABLE TO MAKE THE TUNES THAT BRING JOY TO OUR HEARTS
- EVERYTIME WE HEAR THEM! (ALSO CONSIDER THE AMAZING DIVERSITY OF STYLES OF
- MUSIC THAT ╥OB COMPOSED). ╙ECONDLY, HE WAS ABLE TO MAKE MUSIC WHICH WAS SUITED
- TO THE STRENGTHS AND LIMITATIONS OF THE ╙╔─ CHIP. ╩UST RECALL THE SOUNDFX USED
- AT THE BEGINNING OF ╘HRUST, OR IN THE ─ELTA IN-GAME MUSIC. ╨ERHAPS THE BIGGEST
- LIMITATION OF ╙╔─ MUST BE THE MEAGRE 3 CHANNELS THAT CAN BE USED, BUT MOST
- ╚UBBARD SONGS APPEAR TO HAVE FOUR, FIVE OR EVEN MORE INSTRUMENTS GOING (JUST
- LISTEN TO THE BEGINNING OF ╨HANTOMS OF THE ┴STERIODS FOR EXAMPLE... THAT'S
- ONLY ONE CHANNEL USED!!). ╔ COULD REALLY GO ON FOR (P)AGES IDENTIFYING THE
- OUTSTANDING THINGS THAT ╥OB ╚UBBARD DID, SO ╔ WILL FINALLY MENTION THAT ╥OB'S
- CODING SKILLS AND HIS MUSIC ROUTINES WERE A MAJOR FACTOR IN HIS SUCCESS.
-
-
- ╘HE ╞IRST ╥OB ╚UBBARD ╥OUTINE:
- *****************************
-
- ╥OB ╚UBBARD CREATED A SUPERB MUSIC ROUTINE FROM THE VERY FIRST TUNE WHICH
- WAS RELEASED (├ONFUZION). ╞URTHERMORE, ╥OB USED THIS ROUTINE TO MAKE MUSIC
- FOR A VERY LONG TIME, ONLY CHANGING IT _SLIGHTLY_ OVER TIME. ╘HE SOURCECODE
- THAT ╔ PRESENT HERE WAS USED (WITH SLIGHT MODIFICATIONS) IN: ├ONFUZION, ╘HING
- ON A ╙PRING, ═ONTY ON THE ╥UN, ┴CTION ┬IKER, ├RAZY ├OMETS, ├OMMANDO, ╚UNTER
- ╨ATROL, ├HRIMERA, ╘HE ╠AST ╓8, ┬ATTLE OF ┬RITAIN, ╚UMAN ╥ACE, ┌OIDS, ╥ASPUTIN,
- ═ASTER OF ═AGIC, ╧NE ═AN & ╚IS ─ROID, ╟AME ╦ILLER, ╟ERRY THE ╟ERM, ╟EOFF ├APES
- ╙TRONGMAN ├HALLENGE, ╨HANTOMS OF THE ┴STEROIDS, ╦ENTILLA, ╘HRUST,
- ╔NTERNATIONAL ╦ARATE, ╙PELLBOUND, ┬UMP ╙ET AND ╙PIKE, ╞ORMULA 1 ╙IMULATOR,
- ╓IDEO ╨OKER, ╫ARHAWK OR ╨ROTEUS AND MANY, MANY MORE! ┴LL YOU WOULD NEED TO DO
- TO PLAY A DIFFERENT MUSIC IS TO CHANGE THE MUSIC DATA AT THE BOTTOM, AND A FEW
- LINES OF THE CODE.
-
- ╘HIS PARTICULAR ROUTINE HAS BEEN RIPPED OFF BY MANY FAMOUS GROUPS AND
- PEOPLE OVER THE YEARS, BUT ╔ DON'T THINK THAT THEY WERE EVER GENEROUS ENOUGH
- TO SHARE IT AROUND. ├AN YOU REMEMBER ╘HE ╩UDGES AND ╥ED ╙OFTWARE?? ╘HEY MADE
- THE FAMOUS ╥ED-╚UBBARD DEMO, AND USED IT IN ╥HAA-╠OVELY AND MANY OF THEIR
- OTHER PRODUCTIONS. ╔'M SURE THAT THE (┴TARI) ╙╘ FREAKS READING THIS WILL LOVE
- ═AD ═AX (AKA ╩OCHEN ╚IPPEL), AND REMEMBER THE ┬╔╟ DEMO WHICH FEATURED APPROX
- 100 ╥OB ╚UBBARD TUNES CONVERTED TO THE ╙╘. ┴LTHOUGH ╔ HATE TO ADMIT IT, ╔
- DECIDED TO START SHARING AROUND MY OWN SOURCECODE AFTER RECEIVING THE AMAZING
- ╨ROTRACKER SOURCECODE (340╦!) ON THE ┴MIGA (THANKS ╠ARS ╚AMRE). ╘HAT MADE ME
- SHAMEFUL TO BE SELFISH, ESPECIALLY AFTER ╔ LEARNED ALOT OF FROM IT. ╫HY DON'T
- ┘╧╒ SHARE AROUND YOUR OLD SOURCECODES TOO!
-
- ╘HE PARTICULAR ROUTINE THAT IS INCLUDED BELOW WAS RIPPED FROM ═ONTY ON THE
- ╥UN, AND IT APPEARED IN MEMORY FROM $8000 TO ABOUT $9554. ╘HE COMPLETE
- ROUTINE HAD CODE FOR SOUNDFX IN IT, WHICH ╔ HAVE TAKEN OUT FOR THE SAKE OF
- CLARITY. ┴LTHOUGH THE ROUTINE IS REALLY TINY - A MERE 900 OR 1000 BYTES OF
- CODE, THERE ARE SOME AMAZINGLY COMPLEX CONCEPTS IN IT WHICH REQUIRE ALOT OF
- EXPLANATION IF YOU DON'T KNOW MUCH ABOUT COMPUTER MUSIC OR ╙╔─. ╞ORTUNATELY
- FOR YOU, ╔ HAVE PUT IN EXCELLENT LABEL NAMES FOR YOU, AND ALSO ALOT OF REALLY
- HELPFUL AND AMAZING COMMENTS. ╔N FACT, ╔ THINK THIS SOURCECODE MUST HAVE A
- MUCH BETTER STRUCTURE AND COMMENTS THAN ╥OB ╚UBBARD'S ORIGINAL!!! ╔ THINK THAT
- THE BEST WAY TO UNDERSTAND THE SOURCECODE IS TO STUDY IT, AND FIGURE OUT WHAT
- IS GOING ON USING THE COMMENTS.
-
- ╔N ADDITION TO THE COMMENTS IN THE SOURCE, THERE ARE *3* DESCRIPTIONS OF
- THE ROUTINE IN THIS ARTICLE. ╘HE FIRST TELLS YOU HOW TO USE THE MUSIC ROUTINE
-