Jump to content

jstout

Members
  • Posts

    545
  • Joined

  • Last visited

  • Days Won

    5

Everything posted by jstout

  1. View attachment: Original_CPU_Passing.nes View attachment: Original_CPU_Passing_Juiced.nes .define X_DISTANCE $DD.define Y_DISTANCE $DE .define RECEIVER_LO $40.define RECEIVER_HI $41 .define DEFENDER_LO $42.define DEFENDER_HI $43 .define X_LO_APART $44.define X_HI_APART $45 START:LDY #$00 ; SET TO FIRST COMMAND BYTETYAPHA@NEXT_RECEIVER:PLATAY; CHECK FOR NO MORE RECEIVERSCPY $DCBCC @CONTINUEBEQ @CONTINUE; NO OPEN RECEIVERS SO RANDOM THROWLDA $3BAND $DCTAYRTS@CONTINUE:INY ; SET TO NEXT RECEIVER ; FIND X DISTANCELDA ($3E),YAND #$F0LSRSTA X_DISTANCE ; DISTANCE * 8 PIXELSBNE @Y_GETJMP @EXIT @Y_GET:; FIND Y DISTANCELDA ($3E),YAND #$F0LSRLSRLSRLSRSTA Y_DISTANCEASLASLCLCADC Y_DISTANCESTA Y_DISTANCE ; DISTANCE * 5 PIXELS ; GET RECEIVER LOCATIONLDA ($3E),YAND #$0FASLTAXTYAPHA;LDY #$08LDA ($AE),YBMI @2PLDA $DEEB,XSTA RECEIVER_LOLDA $DEEC,XSTA RECEIVER_HIJMP @DEFENDER@2P:LDA $DF01,XSTA RECEIVER_LOLDA $DF02,XSTA RECEIVER_HI @DEFENDER:; GET DEFENDER LOCATIONLDX #$14@NEXT_DEFENDER:LDY #$08LDA ($AE),YBMI @1PLDA $DF01,XSTA DEFENDER_LOLDA $DF02,XSTA DEFENDER_HIJMP @CALC@1P:LDA $DEEB,XSTA DEFENDER_LOLDA $DEEC,XSTA DEFENDER_HI @CALC:; FIND X SIDELDY #$15LDA (RECEIVER_LO),YCMP (DEFENDER_LO),YBCC @RIGHT ; RECEIVER < DEFENDERBNE @LEFT ; RECEIVER > DEFENDERDEYLDA (RECEIVER_LO),YCMP (DEFENDER_LO),YBCC @RIGHT ; RECEIVER < DEFENDER ; RECEIVER > DEFENDER ; X DISTANCE CHECK@LEFT:LDY #$14LDA (RECEIVER_LO),YSECSBC (DEFENDER_LO),YSTA X_LO_APARTINYLDA (RECEIVER_LO),YSBC (DEFENDER_LO),YSTA X_HI_APARTJMP @XAPART @RIGHT:LDY #$14LDA (DEFENDER_LO),YSECSBC (RECEIVER_LO),YSTA X_LO_APARTINYLDA (DEFENDER_LO),YSBC (RECEIVER_LO),YSTA X_HI_APART @XAPART:LDA X_HI_APARTBNE @GOOD ; VERY LARGE DISTANCELDA X_LO_APARTCMP X_DISTANCEBCS @GOOD ; OUT OF X DISTANCE ; IN X DISTANCE = CHECK Y DISTANCE ; Y DISTANCE CHECK@TOP_BOTTOM:LDY #$17LDA (RECEIVER_LO),YCMP (DEFENDER_LO),YBCC @BOTTOM ; RECEIVER < DEFENDER ; RECEIVER > DEFENDER @TOP:LDA (RECEIVER_LO),YSECSBC (DEFENDER_LO),YCMP Y_DISTANCEJMP @YAPART @BOTTOM:LDA (DEFENDER_LO),YSECSBC (RECEIVER_LO),YCMP Y_DISTANCE @YAPART:BCC @NEXT ; IN Y DISTANCE = BAD THROW@GOOD:DEXDEXBMI @THROW ; OPENJMP @NEXT_DEFENDER@NEXT:JMP @NEXT_RECEIVER @THROW:PLATAY@EXIT:RTS Set Default Values: PRO T WAGGLE L = 93 54 22 R AND S FLARE C = 94 83 75 52 21 PRO T WAGGLE R = 63 54 21 ROLL OUT R = 94 63 45 31 ROLL OUT L = 93 74 45 22 T PLAY ACTION D = 93 73 42 21 PRO T SCREEN L = 93 54 45 21 PLAY ACTION = 93 54 42 PWR FAKE Z POST = 94 53 31 WTE F-FLICKER = 93 84 SHOTGUN X CURL = 63 64 45 42 21 R AND S Z FLY = 94 92 53 55 PRO T FLARE D = 94 73 45 22 21 OFFSET FLARE E = 94 63 41 32 ONEBACK Z CROSS = 93 92 44 31 ONEBACK FLARE A = 94 53 42 T FLEA FLICKER = 93 54 22 PWR FAKE X FLY = 93 94 55 31 SHOTGUN X DRIVE = 93 54 AND 93 95 54 61 22 R AND S 3-WING = 93 94 72 55 PLAYACTION Z IN = 93 51 54 42 FLEA FLICKER = 94 53 32 PRO T FLARE C = 93 75 64 42 SHOTGUN 3-WING = 93 74 52 45 31 SHOTGUN XY BOMB = 93 94 81 75 62 R AND S Y UP = 93 95 84 42 21 X OUT AND FLY = 94 83 55 32 31 REV-FAKE Z POST = 94 51 SLOT L Z DRIVE = 83 54 AND 83 71 54 45 22 NO BACK X DEEP = 94 72 53 21 SHOTGUN Z S-IN = 73 44 AND 95 73 62 44 21 REDGUN Z SLANT = 94 95 52 43 31 ;--------------- x90 COMMAND: FIRST NIBBLE (BOX DISTANCE) SECOND NIBBLE (RECEIVER): (8 Pixels = 1 Yard) 0 = 0 PIXELS LEFT AND RIGHT + 0 PIXELS UP AND DOWN (Forces Throw) 1 = 8 PIXELS LEFT AND RIGHT + 5 PIXELS UP AND DOWN 2 = 16 PIXELS LEFT AND RIGHT + 10 PIXELS UP AND DOWN 3 = 24 PIXELS LEFT AND RIGHT + 15 PIXELS UP AND DOWN 4 = 32 PIXELS LEFT AND RIGHT + 20 PIXELS UP AND DOWN 5 = 40 PIXELS LEFT AND RIGHT + 25 PIXELS UP AND DOWN 6 = 48 PIXELS LEFT AND RIGHT + 30 PIXELS UP AND DOWN 7 = 56 PIXELS LEFT AND RIGHT + 35 PIXELS UP AND DOWN 8 = 64 PIXELS LEFT AND RIGHT + 40 PIXELS UP AND DOWN 9 = 72 PIXELS LEFT AND RIGHT + 45 PIXELS UP AND DOWN A = 80 PIXELS LEFT AND RIGHT + 50 PIXELS UP AND DOWN B = 88 PIXELS LEFT AND RIGHT + 55 PIXELS UP AND DOWN C = 96 PIXELS LEFT AND RIGHT + 60 PIXELS UP AND DOWN D = 104 PIXELS LEFT AND RIGHT + 65 PIXELS UP AND DOWN E = 112 PIXELS LEFT AND RIGHT + 70 PIXELS UP AND DOWN F = 120 PIXELS LEFT AND RIGHT + 75 PIXELS UP AND DOWN
  2. Ok, here we go TSB org x1_NEW_MINI.nes
  3. Outside of the helmets, change all these (The x7A010 changes can go anywhere there is room if you update all the pointers and jmps in the code): x2025C-x2025F (Pointer to data) x22B5F-x22B62 (Pointer to data) x1FFC1-x1FFCB (Text) x22854-x22886 (Code to get moved data) x7A010-x7A0B7 (Original code and moved data) If you have issues then you can get me a link to the rom and I can do it.
  4. Its legit. Its on the old 34 and 43 defense 32 team rom so nothing else is updated but the minis. But anyone can pull the data the data from this (x22854-x22886 and x7A010-x7A0B7 was changed to allow me some more editing room) to update a newer one. I don't know what everyone is currently using or I'd update one myself. TSB32_2D.nes Its a typo I made so let me edit it and I'll post the fix on the rom in this post. *Rom Fixed now and I put Botom's Raider on so you can view the difference
  5. This was the absolute best I could come up for the moment. I had all the minis near exact (excluding color shades) but went way way over the NES sprite limit so I had to whack parts of the helmets until I reached the maximum. The rom needs some cleanup of the tiles I removed during the fixing but nothing crazy except moving some data to allow more mini helmet design room. *Edit fixed a few things in the image
  6. It'll be extremely tough but technically possible to separate each design. The background has 2 banks totaling 256 tiles. The first bank contains numbers, letters, and misc stuff needed for various screens but has a few tiles that could be changed like the special FIRST DOWN text to just plain white. The second bank contains the mini helmets, playoff graphics, and team control text. Basically 32 teams * 3 helmet parts + 3 facemasks = 99 tiles of the 128 without even getting to the special tiles and playoff screen. The colors could be selected elsewhere in the rom but there is no point since the helmets will always share the same palette and will end up being the same. I'm definitely interested in seeing how far I get the colors and tiles of AdamB's graphics on the rom.
  7. Trying to explain this quickly but the logo can be anything. x123A5 gives basic info about the design What you'll be interested in is F6 18 19 0F 1D sets the CHR Tile Banks (0F 1D would be the tiles to the logo) F8 44 3F sets the Y and X position on the screen F3 8A F6 sets the pointer to the logo design x12B06 is the logo design 90-9F 80-8F = Set the column 20-5F = Set the row and palette (20 is row 1 palette 1, 21 is row 1 palette 2, 22 is row 1 palette 3, 23 is row 1 palette 4, 24 is row 2 palette 1...) 60-7F = is the same as 20-5F but horizontal inverts the tile A0-BF = Set new address (A0 00 = $A000, BF FF = $BFFF) C0-DF = Set new address and store return (C0 00 = $A000, DF FF = $BFFF) FC = Following tiles: 00 Vertically invert, 2F-28 shift upward, 20-27 shift downward, 3F-38 shift leftward, 30-37 shift rightward FD = Skip next byte FE = Return to Address FF = End The design will be in a format like COLUMN ROW TILE# ROW TILE# COLUMN ROW TILE# END
  8. http://www.couchscout.com/nfteam.htm has various player info that you might find somewhat useful. It has the height, weight, 40 time, and overall rating for NFL and college players
  9. DahrkDaiz's Mario Adventure is definitely a must play. That game is the reason I attempted hacking games in the first place. I don't play video games too often anymore and a lot of the good ones are on the list already but I'll load up a simple pong game I created for NES to waste a few minutes now and then.
  10. That is pretty good keithisgood. Here is an image of the logo I drew up for someone at 400% scale.
  11. Trying to keep this answer fairly short. TSB has a draw screen routine that handles the screen and effects. The relevant draw section for the screen you want is: SUPER_CHAMPION_SCREENS:  .BYTE $C8  .BYTE $F1  .BYTE $F7, $20  .BYTE $C0, $01, $88, $18, $1A  .BYTE $F9, $02, $B6, $B7  .BYTE $F6  .BYTE $8A, $42  .BYTE "SUPER CHAMPION"  .BYTE $FD, <L_7_ADF9, >L_7_ADF9 ; Commands to Draw Team Name  .BYTE $FA, $1B ; Set Team Colors  .BYTE $E5, $FF  .BYTE $F3, $44  .BYTE $FB, $F0 ... The FA 1B command does the following code: L_24_8BCB: ; Do FA 1B command LDA #BANK27 LDY #<L_27_800C LDX #>L_27_800C JSR bank_swap_8000_jump LDA #$02 JMP L_24_8C48 L_27_800C: JMP L_27_82BA L_27_82BA: ; Set Palette Buffer LDY #$E0 : LDA L_27_84F4-$E0,Y STA $031A-$E0,Y ; Store in Palette Buffer INY BNE :- JMP L_27_8290 L_27_8290: ; Set Team Colors LDA $6E ; Team ASL ASL TAX LDA L_27_8484+0,X STA $031B STA $032B LDA L_27_8484+1,X STA $031C STA $032C LDA L_27_8484+2,X STA $031F STA $032F LDA L_27_8484+3,X STA $0320 STA $0330 RTS The Palette Buffer is then transferred as the screen palette later.
  12. I believe you are asking for how colors are done in regards to backgrounds. TSB stores its palette into a buffer in ram at $31A-$339 and then stores the buffer into the NES palette during NMI (if told the palette needs updating). There are 3 points of time in which the NES should have palette changes: Forced V-Blank = the screen is disabled so you see nothing but black NMI = before V-Blank (the screen is being updated from top to bottom) IRQ = interrupt at a horizontal scan-line (at a line during the screen update from top to bottom) The palette has 4 sets for both Background and Sprites. Background uses a nametable (PPU Memory $2000, $2400, $2700, $2C00) to place the specific graphic tiles that create the screen and uses an attribute table (PPU Memory $23C0, $26C0, $2BC0, $2FC0) to tell which of the 4 sets to use for blocks of the screen. Sprites have a section in OAM (Sprite-Ram) that tells which of the 4 sets to use for its tiles. ----- For the playbook screen, I simply told the game to store certain colors in the palette buffer before the screen was loaded and then the game automatically updates the palette for the screen in NMI as we wanted. For what you want to do with the endzones is similar but more complicated. The endzone colors are are working together to also color the midfield logo so you need to have the game check for the current position of the field on the screen and when you need the endzone color to write the color you need into the palette buffer and update the palette (or directly into the NES) else write the normal colors needed for the midfield logo in the same manner.
  13. This should have the mini helmets changed. I made Baylor's green but you can easy change it to white like in your post. NCAA 2013.nes
  14. The FD command gives the COM the ability to check that certain players are near. The option pitch uses this knowledge for the COM to pitch the ball when a set player is near thus giving it some awareness of what is going on (we don't want to pitch when a player is near that is supposed to be block by an OL for example). Without the command the player would always keep the ball thus there wouldn't be any option ability. The FD command is just simple bit manipulation (each bit is a player with the order RE, NT, LE, ROLB, RILB, LILB, LOLB, RCB, LCB, FS, SS): x80 = %10000000 x40 = %01000000 x20 = %00100000 x10 = %00010000 x08 = %00001000 x04 = %00000100 x02 = %00000010 x01 = %00000001 x00 = %00000000 Example: x03 = x02 + x01 for %00000011. So FD 03 00 would be %00000011 %00000000 having the 7th and 8th player set (LOLB and RCB).
  15. Yes, this is a read handoff. The absence of the CB with the FD command means there is no option pitch while the 10-1A command is what creates the read handoff action. In your analysis, DE YY XX is a cleaner look to be shown (the DE is the command to take control if ballcarrier and 00 01 just makes it the shortest possible check path) and FF 32 B8 goes to x9842 (F4 00 | FE FE) instead of the other stuff.
  16. I don't know which play this is without looking but its definitely not a handoff by the code you posted. That code only contains an option pitch command.
  17. 1. You aren't handling the NES banking properly (in the offensive play code $A000-$BFFF = x8010-xA00F). So, CA D8 A4 doesn't go to xA4C8 it goes to x84E8 (E2 06 | FE F1). 2. xCB (Location, Player) and a location is Y,X coordinates so DC is the Y and 24 is the X and Player is 01. x100 - xDC = 4 Yards Upward and x24 - x00 = 4 Yards Forward. 3. The E2 isn't doing anything in the play code above. This code says to Take the Shotgun Snap, COA/COM RP boost, Set to look for RCB (%00000001 %00000000), move 4 yards upward and 4 forward with the option pitch to RB1, take control if ballcarrier else block RILB.
  18. A nibble is a single digit of a byte so x01 the 0 is the first nibble and 1 is the second nibble and a byte is made of 8 bits (bits are always 0 or 1). In the read handoff, its a straight probability and the CPU doesn't read anything (generally players are far away from a handoff and the CPU isn't able to detect things outside of is a player close). So in my example, 12 07 the read handoff is to the FB and there is a 7 (7/16 = 43.75%) chance the COM QB keeps the ball (MAN player is decided with the button press). I believe that is what you were asking about.
  19. 1. FD is the command and the 2 bytes following are the data for the command which contain which players to look for in bits (RE to SS). In the example, 03 E0 in bits = %00000011 %11100000 so RE, NT, LE, ROLB, RILB, LILB are set to 0 so we ignore them and LOLB, RCB, LCB, FS, SS are set to 1 so we are looking for them. 2. 10-1A is the read handoff command where the 2nd nibble is the player to read handoff with (QB to RT) and the next byte is the probability for the COA/COM to keep/handoff. In the example, 12 = read handoff with FB and 07 is the COA/COM probability. 3. CB is the option on path command where the next 2 bytes are the path, and the 3rd byte is the player to pitch to (QB to RT). In the example, 21 10 is the path and 01 is the HB. 4. The player to pitch to is in the CB command (explained above). 5. DE is the command of a path to move along where if the player has the ball in their possession while in that path the MAN/COM takes control. This is a check to allow the MAN/COM to take control allowing movement as the ballcarrier or if not then perform later actions it needs to as the non-ballcarrier. 6. CB and DE location data moves the player exactly how the D7 command does. 7. The post HB and FB bytes is the FF command (jump to pointer). In the example, those pointers take them to commands to run block (HB blocks LOLB and FB blocks the SS).
  20. xplozv was personally given a copy of my demo with explanations and he used those to create the rom in the link (I have no part in the design of the plays on his rom). drunken_honkey and hurricane55 also have option code created by me to work on their TSB 3 NCAA rom (all play designs are created by those 2 on their rom). For a original playbook, you need to edit out the few x10-x1A play commands to x00-x0A. Then you need to rewrite the plays so that the option works on the plays you want or write up the new plays.
  21. If you have a rom with the option code then: x10-x1A (Chance) = Read Handoff, chance of keep x00 = 0% and x10 = 100% xCB (Location, Player) = Option on path, xFD sets the players to pitch away from xDE (Location) = MAN/COM Control on path if player is ball carrier *Location Coordinates are the same as the D7 Command Example Usage (example came from my NES demo): QB: D4, D7 FF F8, 12 07, FD 03 E0, CB 21 10 01, DE 00 01, FF 4E BE The QB will step back, can handoff or fake to the FB by pressing B, and run to just outside of the RT. On his path to the RT, if Man will pitch to the HB by pressing B and if COA/COM will pitch if the LOLB, RCB, LCB, FS, or SS come near. If the QB doesn't have the ball then will block the LOLB. HB: F3 28, D7 22 0C, DE 1A 20, FF 4E BE The HB will pause then sweep to the outside and run up the sideline. If the HB doesn't have the ball then he will block the LOLB. FB: D8 FA F4, D8 FA 00, DE 00 01, FF 5F BE The FB will dive behind the RG. If the FB doesn't have the ball then he will block the S.
  22. Its basic NES PPU Locations. $2000 is top left, $201F is top right, $23A0 is bottom left, $23BF is bottom right. Each x01 is one space left and each x20 is one space down. BUF = E6 20 ($20E6) IND = 26 21 ($2126) etc.
  23. The SKP, MAN, COA, COM text placement locations are at x3292F-x32966
  24. The SKIP, MAN, COA, COM text placement locations are at x3292F-x32966
×
×
  • Create New...