Jump to content

supercat

Members
  • Content Count

    7,259
  • Joined

  • Last visited

Everything posted by supercat

  1. If a shopping mall is going broke because it's losing tenants (stores), will it be better served by raising rents or reducing them? It is truly astounding the extent to which the government on the one hand gives companies billions of dollars in handouts to encourage them to maintain operations in the U.S., while on the other hand it imposes billions of dollars in taxes and regulatory costs. Some regulations are useful, of course, but some industries are burdened down with a lot of useless regulations (in addition to some useful ones). Rather than giving businesses money, the government should figure out how not to be a burden. The government has promoted a level of confidence in certain markets which is grossly unwarranted. It should hardly be surprising that people make financial decisions which would otherwise be irrational (and which may or may not be made rational by government bailouts). Suppose someone ("the dealer") offers the following deal: a person picks a card at random from a standard deck; if it's ten or higher, he win $100. Otherwise he loses $100. How many customers do you suppose the dealer would get, offering those odds? Now suppose the deal was changed slightly: if a card is ten or higher, the player wins $100. Otherwise the dealer collects $100 (as above) but U.S. taxpayers pick up half the tab, so the player only loses $50. How many customers do you suppose the dealer would get under those rules? How do you know to whom he owes what favors? A very large portion of his money was in donations of less than $200 each. Given that--unlike other politicians--Obama accepted anonymous gift cards, there's no telling whether each donation represents a distinct individual. If someone wanted to donate $3,000 to Obama's general election campaign ($800 over the legal limit) it would be a simple matter to buy fifteen $200 gift cards. If bought singly at various places, one could easily do so without arousing any suspicion and donate completely untraceably. If one wanted to donate $30,000 it would be a little harder, but hardly impractical. Believe what you will about to whom Obama owes favors. I suspect it will be obvious within six months who's right. Obama taught "Constitutional Law", or more precisely, how to convince people that the Constitution says things it really doesn't. Not a positive in my book. I consider myself a Constitutionalist first and foremost. To the extent that the government fails to abide by the Constitution, it is illegitimate. I wish that were more widely realized. Republicans. Not conservatives. Recognize that there are many in the GOP who view conservatives as the enemy, and seek to destroy the party from within. Not sure how best to counteract that. The New Deal prolonged the depression by quite a few years. I don't want another one on top of it. Because the things that were bad with leftist Republicans will be even worse with leftist Democrats. The problem isn't conservatism--it's the lack of it. What "passes for" the right is bad. Largely because it has little to do with actual conservatism. The leftists in the GOP will oppose any effort by conservatives. So where should they go? Leftists in the GOP had their shot. Nothing to do with conservatives. I think we need a change to. Governor Palin seemed a lot better than any of the other candidates.
  2. The RISC vs. CISC distinction largely centers around the question of whether to have instructions of a fixed length that is somewhat longer than optimal, in the interest of facilitating pipelining, or whether to have variable-length instructions for purposes of reducing code size (and in some cases memory bandwidth). The 6502's fairly simple state machine does avoid the idle bus cycles that are common on many CISC architectures, but the fact that very few instructions are one machine word long precludes its being called a RISC.
  3. The 8051's internal RAM is on a separate bus from the code store, so there is no speed penalty for instructions that use it. On the 6502, LDA zp is faster than LDA abs, but it's still slower than LDA #imm. By contrast, on the 8051, MOV A,direct is the same speed as MOV A,#imm.
  4. I don't think so. In a RISC, the vast majority of instructions--if not all--fit in a single aligned machine word. There is no expectation of optimizing instructions longer than a single machine word such that they will execute in less time than two single-word instructions. Further, RISC architectures are designed to minimize data memory bus traffic. Can't exactly say that about the 6502. The 6502's instruction set is somewhat more orthogonal than some other CPU's, but with rather a surprising number of peculiarities. As I've noted before, I'm curious how it evolved. It would have seemed easy to partition the instruction set into two groups: (1) instructions which are allocated opcodes for eight addressing modes, and (2) instructions with a single addressing mode. Opcodes whose two MSB's are 00 are in the latter group; all others would be in the former. Had things been laid out that way, there would have been no need to have instructions like BIT, CPX, and CPY located in weird spots in the opcode map and restricted to only a few addressing modes. All "multi-mode" instructions would support addressing modes abs abs,x abs,y zp zp,x (zp,x) (zp),y along with accumulator (for six) or immediate (for the other eighteen) modes. I wonder if anyone counted up opcodes and figured they'd all fit? BTW, I wonder whether LAX is used more often to load the accumulator and the X register, or whether it's used more often just to load the X register, but the accumulator comes in the ride (and/or gets in the way)?
  5. Such a thing might be possible if you didn't mind turning your head sideways to play.
  6. There are some very rich people who have used the power of government to profit at others' expense. Such people, however, will be immune to any effort to 'soak the rich'. The effect of class warfare is that the people who actually earn their wealth by making things, hiring workers, or risking their own money end up being brought down; this discourages other people from making things, hiring workers, or risking their own money, while it protects the elite from competition. If Republicans were the party of the rich, why are the upper echelons of the elite mostly Democrats or leftist-leaning Republicans? There is a problem of balance, but it's not the gap between the upper middle class and the lower classes; it's the gap between the upper elite and the upper middle class. Attempts at improving 'social equality' serve to increase, rather than decrease, that gap. The biggest 'regulation' that's needed in the financial markets is to have the government stop violating the primary rule of sensible markets: those who make bad investments lose money. To be sure, people who commit fraud need to be prosecuted, but the pressure for prosecution will be much stronger if a fraudster costs 10,000 people $25,000 each than if he costs 250,000,000 people $1 each. What do you know of Obama's record? By all indications, it's amazingly scant. A lot of people imagine the gaps in Obama's record are filled with whatever they'd like to see. I would consider that naive. I think Obama is deliberately trying to leave as few footprints as possible, and cover his tracks as well as he can. He's claimed himself as a moderate, even though he was radically to the left of everyone else in the Senate. One thing that severely irks me is the frequency with which horrible leftist ideas are falsely labeled as "conservative", so that their failure can be blamed upon "conservatism". A few years ago, for example, California "deregulated" electrical production and distribution. Well, except for a few regulations that any decent economist would realize would make things unworkable: (1) customer electric rates were pegged, independent of what electricity cost the suppliers; (2) suppliers were forbidden from purchasing advance contracts for electricity. Many of the generators with the lowest marginal production cost take awhile to ramp up and ramp down. If a utility on Monday offers Acme Electric that it will pay a certain amount of money per MWH for 1,000MW of electricity on Friday from 8:00am to 6:00pm, paying 50% for any electricity not actually used, then Acme Electric will likely accept a lower rate than if the utility makes its request at 7:55am on Wednesday. If a utility needs to come up with electricity for which it hasn't made advance arrangements, it may have to pay a considerable premium. The theory behind the no-advance-purchase rule was that without it, some utilities would do much better than others, causing the latter to drop out of the market and removing competition. Unfortunately, the effect of the rule was to eliminate any benefit the "competition" might have offered. Bush was pathetic. Not because he was conservative, though, but because he wasn't.
  7. I saw a demo tape that loaded faster than a 'stock' 1541, while showing a screen and playing music. Playing the music while loading probably isn't too hard (divide the data into blocks, and handle the music between blocks). Accepting the loss of 43 cycles at a pop 25 times a frame would seem harder. Maybe not impossible, though. If the CIA's could be supported so one would have the MSB of interrupt status become set at a moment just after the end of a badline and every scanline thereafter, while the other had the MSB become set when there was a pulse from the tape, then maybe something like this could work: StartOfByte: lda #1 clc ByteStartLp: bit TIMER_INT bpl ByteStartLp bit TAPE_INT bmi ByteStartLp ; Assume we just had a tape pulse the last time we had an interrupt. ; Acc is loaded with 1 to start with. StartOfBit: BitWait1: bit TIMER_INT bpl BitWait1 bit TAPE_INT bmi GotBit BitWait2: bit TIMER_INT bpl BitWait2 bit TAPE_INT bmi GotBit sec BitWait3: bit TIMER_INT bpl BitWait3 bit TAPE_INT bpl BitWait3 GotBit: rol bcc StartOfBit sta buffer,y iny bne StartOfByte The code for each polling operation fits in less than 20 cycles, except at the end of each byte. Each byte is nine pulses; the gap between the first and second pulse codes a bit, likewise second and third, etc. The gap for a 'zero' should be 1.3 scan lines; for a 'one' should be 3.3; the gap between bytes should be 2.3 scan lines. A byte with half the bits set would thus take 20.7 scan lines, for a data rate of about 760 bytes/second. Quite a bit faster than the normal tape or disk routines; with some work it could be made faster still.
  8. The statute of limitations means that if you make an illegal copy of the software today, and never again, the owner will not be able to prosecute you in more than something like three years' time for today's infringement. So if you go three years without infringement, you're in the clear. On the other hand, if you've been infringing for years and get caught, all the statute of limitations will do is limit damages to those acts of infringement that occurred within the last three years. From a practical standpoint, however, companies are going to send out a cease-and-desist notice before they file a lawsuit over something that's widely perceived as abandonware, and if you comply with the notice they're not going to bother with anything beyond that. If there has been no effort to market software, proving actual damages will be essentially impossible. While they could seek statutory damages beyond the actual damages, they'd have to find a jury that was willing to go along with that. For all practical purposes, Congress has ignored the 'limited times' requirement of the copyright power. As soon as Mickey's copyright is about to expire, the time will be upped to 70 years. I wouldn't mind letting companies have a long copyright term if they had to do something to maintain it (as is the case with trademarks, which are allowed to persist indefinitely). The granting of perpetual copyright terms by default, however, means that very little stuff will ever usefully enter the public domain. If someone in 2100 finds a work that says "Copyright 1980 John Smith", then unless they can find an obituary for the particular John Smith that wrote the work in question, they'll have no way of knowing whether the copyright has lapsed. That's simply absurd. IMHO, anyone wanting copyrights beyond a certain duration should be required to tag their works with something like a GUID and register it. That used to be the case. Not anymore. Many other countries have declined to jump on the Mickey Forever bandwagon.
  9. To read paddles, one must poll them at precise spots on the frame. On the 2600, the code always knows where the beam is during the kernel. If it has enough cycles to read the pots mid-kernel it can do so. On the 7800, code generally does not chase the beam. An Atari 7800 game could be made to chase the beam, but it would add about a 10%-25% CPU load to read one paddle per frame, or a 75% CPU load to read more than one.
  10. Are there any tunes that have been ruined for you by videogames (such that it's hard appreciate the original)? For me, one such tune would be Night on Bald Mountain, ruined by the C-64 Crush, Crumble, and Chomp. For whatever reason, the person who programmed it decided to drop the tempo in half at a certain point in the tune; the result makes perfect musical sense, but has a totally different feel from the original. Now the original seems way too fast there.
  11. I think the issue was that the SECAM modulator used RGB, and the TIA's design was based on generating a luma and chroma signal. Since the TIA has three distinct luma outputs (which get summed externally) it was easy to use those outputs directly to produce RGB; the chroma signal is ignored. It would seem like it should have been a simple matter to use the chroma signal to generate a rough luminance value which could be summed on to RGB. If nothing else, use an AND, NAND, or XOR gate to combine the chroma output with the crystal signal. This would cause part of each pixel to be bright and part to be dim; how much was bright would depend upon the programmed chroma value. Not great, but better than just having eight colors. Oh well--too late now.
  12. ROM and RAM both. The hammer used up too many clock cycles to co-exist on a scan line with the normal shape-draw logic. Since the hammer only appears on a few scan lines, and since the overrun isn't huge, the game uses two or three bytes of RAM per line to store the sprite data for each scan line that contains the hammer. This data is filled in during the vertical blanking interval, when there is (comparatively speaking) plenty of free time. This approach does work, but it is a bit piggish. Still, when it's needed it's needed. Incidentally, Combat and Toyshop Trouble use RAM buffering of shapes as well.
  13. Maybe I'm biased, but I am extremely partial to my themes for both Stay Frosty and Toyshop Trouble.
  14. It probably shines light through a 45 degree half-silvered mirror and has an electric eye which is optically at the same spot as the film holding the image. If the flashing spot from the gun is on top of the duck, the electric eye will pick up a pulse. Otherwise the pulse (if it's picked up at all by the optics) will be focused somewhere other than the electric eye. Not sure how it picks up misses, though, unless it listens for the click.
  15. The Atari 2600 games market is very illiquid. A seller with a boxed Pengo new in box could probably get more than $40 for it from an end-user if he was willing to wait around for the right buyer, and someone seeking to buy a Pengo for $40 or less could do so if he was willing to wait for the right seller, but if a seller wants cash for his game now he really isn't going to want to wait around for an end-user to buy it. Thus, the reseller. If someone wants to get rid of a game in two weeks or less, the reseller will buy it. Probably not offering as good a price as the seller might get if he was willing to hold out for something better, but the seller gets cash in hand now, not in six months. Meanwhile, if a buyer wants a game now, he can get it. He'll pay more than if he's willing to wait around for one to appear at a good price, but he doesn't have to wait. He can play the game in a few days rather than waiting who knows how many months. Without resellers, a lot of rare items on eBay would sell for a fraction of their worth. You might think that's great if you're trying to buy those items, but if it weren't for resellers in the marketplace a lot of people who happen to have rare items may not bother to list them on eBay in the first place. If I have what happens to be a rare game cart, but I thought that putting it on eBay was likely to result in either a $5 sale or no sale at all, why would I bother listing it at all? If that's all I'd get, why not save myself the effort and just throw it in the trash?
  16. The issue wouldn't just be one of speed. I would expect a normal RAM cart to control its enable using the phi2 clock for synchronization. The phi2 clock is not meaningful, however, during a DL or DLL fetch.
  17. The irony is that the cart is the second-most sophisticated cart ever made available to developers (second only to the SuperCharger).
  18. I'm predicting a major crash, within probably the next four years, which will give less than six months of warning between the time things get bad and the time things get very very bad. Selling government properties could help allay the total crash, but unless it's done as part of a plan to actually regain solvency it would end up making the crash worse, not better. There's a limit to how much tax revenue can be raised. Avoiding unwise spending is clearly what's necessary, but I perceive Obama as being even less likely to really go down that route than McCain. War doesn't really work if there's no money to pay for it. Huh? Jan 1, 2000, the dollar was Eur0.98. Now it's Eur0.78. By what sort of math is that 50%? More like 20%. BTW, 25% yearly inflation would translate into an 83% loss of value over eight years. That's not what we've had lately. It really doesn't take long for changes in tax policy to start affecting companies' behavior. Under Reagan and GWB, tax cuts have resulted in increasing revenues. Of course, the government then proceeded in each case to take advantage of the increased revenues by going on a reckless spending binge, but that doesn't discount the fact that revenues increased. Any revenue increase resulting from increasing taxes will be very short-lived. It is not a realistic solution. Obama is more interested in promoting a world in which the upper middle class is brought down to the standards of everyone below him, than a world in which more people can aspire to have themselves or their children achieve unlimited potential. Nineteenth-Century America didn't have anything like today's social welfare state, and yet a telegraph operator making $2.20/week was able to elevate himself to becoming one of the richest people in the world. Most people of course can't accomplish that in their lifetime, but historically the usual goal--which was achievable--was for parents to give their children a better start in the world than they themselves had achieved. It would take generations for families to grow to greatness, but it was nonetheless a realistic goal. Today there seems to be a perception that if not everybody can become a Bill Gates that the world isn't fair. Well, there are a lot of ways the world has never been fair, but the fact that rising through the ranks of society was achievable but slow wasn't one of them. Such a system was far superior to the alternative, which is to rule that people born into a class, and all their descendants, will forever remain in the class they were born.
  19. On the 2600, the determination of whether or not to do something like displaying a sprite will often take longer than the actual act of displaying it. If code has to check, on every scan line, whether or not it should display a sprite, there won't be nearly as much time for other things as there would be if the code could avoid such a check. In Toyshop Trouble, the player moves smoothly through a large part of the screen, but there are in fact a number of different types of zone the player moves through. I divide these zones into 16-line zones of class 1 and class 2 thusly: -1- The player is the only sprite in class one zones (the space between conveyors). Player data is loaded from (shptr0a),y into GRP0 for all 16 lines of the zone, regardless of whether the player is there or not. If the player is not there, shptr0a points to sixteen bytes of zeroes. The general code for this zone is: sta WSYNC lda (shptr0a),y sta GRP0 lda (colup0),y sta COLUP0 dey ... do a little preparation for the next class 2 zone ... sta WSYNC lda (shptr0a),y sta GRP0 ... etc. ... do a little more preparation for the next class 2 zone ... ... etc. The code in the class 1 zone sets up all the pointers for the next class 2 zone, but it doesn't do any decision making with regard to whether the player is shown in the class 1 zone. It just always clocks out data from (shptr0a),y. -2- There are actually two pieces of code for the class 2 zone, depending upon whether the row of toys is closer to the right or left. Either the rightmost or leftmost toy may be clipped, but not both, so one or the other routine is selected. As with the zone 1 code, zone 2 code doesn't do any decision making except after the last line of toys has been clocked out. On that line only it examines whether or not the player should appear in the next class 1 zone and sets the pointers appropriately. Within the class 2 zone, the only conditional branch is a BPL after the DEY. All other cycles are filled up with instructions to blast out data onto the screen (four sprites with independent color, one of which supports clipping!)
  20. Walgreens has a plug-and-play system that seems like a Wii-Sports-only version of the Wii for $50. They have a video which shows the thing in action and it looks a lot like the Wii. I wonder how they sell the thing at that price. Even the controllers (two pairs) would seem like they'd cost that much. I'm sure they're probably cheap knock-off quality in side, but accelerometers and cameras aren't free.
  21. Even though many PAL sets will tolerate 262 scan lines, most non-digital NTSC televisions won't tolerate 312. I wouldn't count on digital sets to tolerate 312 without auto-detecting PAL and completely losing all color; I'm not sure how many US sets would accept it at all. Maybe I should hook up my 7800 to my digital TV and see if Bobby Geht Nach Haus works.
  22. The best way to test a high-bit flag is to use the BIT instruction followed by BMI or BPL. BMI will branch if bit 7 was set, and BPL will branch if it was not. Incidentally, one very handy technique for the RIOT is to load TIM64 with ~125 plus the delay time. Then wait for it to be less than or equal to 125. This approach makes it practical to divide work over multiple frames. For example, in Strat-O-Gems, it takes a lot of code to evaluate which gems should participate in a reaction. A typical loop looks like: DiagLoop1: bit INTIM bmi Diag1NoKernel jsr KERNEL Diag1NoKernel: ... ... do some stuff ... dex bpl DiagLoop1 The KERNEL routine itself takes care of saving registers (A, X, and S, but not Y or P), waiting for INTIM to reach 125, showing the displayed frame or vSync, and then setting things up for the next display event. Thus, the main program can do work in both vBlank and overscan, without particularly worrying about display timing.
  23. The ability to have multiple rocks in a zone at once is important to the game. I'm not sure if having all five at once in a zone would be critical, but I would think a minimum of four (two per frame). Thinking about it, though, if the O2 had five rocks on screen, a player, an axe or key, and a ladder, assuming the door could be handled with PF graphics, that would be eight sprites total on screen. Since the 2600 can do five sprites per frame, it might not be necessary to multiplex sprites if you don't mind the rocks looking a bit boxy. The space between platforms would allow plenty of CPU time to precalculate the sprite data for the platform scan lines. What am I missing? I'm not sure how to best divvy up the sprites for sensible colors, but if the door and ladder flicker that shouldn't be a problem: Frame 0: P0 -- Human M0 -- Unused (gold bar?) P1 -- Axe/Key M1 -- Rock Ball -- Rock Playfield -- Unused P0 -- Swinging axe M0 -- Rock P1 -- Rock M1 -- Rock Ball -- Ladder Playfield -- Door Hmm... slight complication if the "ball" rock passes over a playfield row, since COLUPF would have to be set there. Hmm... What registers besides the PF have to be written on those rows... I think just two or three each (GRP0 and ENABL on one row, then GRP1, ENAM0, and ENAM1 on the other). How about using COLUBK to draw the platforms to free up the Ball color. Assuming the platform area is 126 pixels wide and you set up the sprite data in RAM before each platform row, then the platform would be something like: lda dat_GRP0 sta GRP0 lda dat_ENAXX sta ENABL lsr jsr DRAW_ROW ; RAM routine--31 bytes and 45 cycles, plus 12 for jsr/rts, so 57 total SLEEP 5 sta ENAM0 lsr sta ENAM1 lda dat_GRP1 sta GRP1 jsr DRAW_ROW ; RAM routine--31 bytes and 45 cycles, plus 12 for jsr/rts, so 57 total SLEEP 5 lda dat_GRP0 sta GRP0 lda dat_ENAXX sta ENABL lsr jsr DRAW_ROW ; RAM routine--31 bytes and 45 cycles, plus 12 for jsr/rts, so 57 total SLEEP 5 sta ENAM0 lsr sta ENAM1 lda dat_GRP1 sta GRP1 jsr DRAW_ROW ; RAM routine--31 bytes and 45 cycles, plus 12 for jsr/rts, so 57 total SLEEP 5 The DRAW_ROW routine in RAM would simply be a mixture of STY COLUBK and STX COLUBK, followed by an RTS. How does that sound?
  24. It's been awhile since I've played PAP (need to hook up my O2 again...) but my recollection is that the doors are always in the center of the screen, and there's at most one ladder on screen at once. If my recollection is correct, how about using PF2 for the doors and the Ball for the ladders?
×
×
  • Create New...